Ver código fonte

Move parent-related methods to their own interface

Grégoire Paris 8 anos atrás
pai
commit
25099543d8
2 arquivos alterados com 55 adições e 33 exclusões
  1. 1 33
      Admin/AdminInterface.php
  2. 54 0
      Admin/ParentAdminInterface.php

+ 1 - 33
Admin/AdminInterface.php

@@ -32,7 +32,7 @@ use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface;
 /**
  * @author Thomas Rabaix <thomas.rabaix@sonata-project.org>
  */
-interface AdminInterface extends FieldDescriptionRegistryInterface, LifecycleHookProviderInterface, MenuBuilderInterface
+interface AdminInterface extends FieldDescriptionRegistryInterface, LifecycleHookProviderInterface, MenuBuilderInterface, ParentAdminInterface
 {
     /**
      * @param FormContractorInterface $formContractor
@@ -432,38 +432,6 @@ interface AdminInterface extends FieldDescriptionRegistryInterface, LifecycleHoo
      */
     public function supportsPreviewMode();
 
-    /**
-     * add an Admin child to the current one.
-     *
-     * @param AdminInterface $child
-     */
-    public function addChild(AdminInterface $child);
-
-    /**
-     * Returns true or false if an Admin child exists for the given $code.
-     *
-     * @param string $code Admin code
-     *
-     * @return bool True if child exist, false otherwise
-     */
-    public function hasChild($code);
-
-    /**
-     * Returns an collection of admin children.
-     *
-     * @return array list of Admin children
-     */
-    public function getChildren();
-
-    /**
-     * Returns an admin child with the given $code.
-     *
-     * @param string $code
-     *
-     * @return AdminInterface|null
-     */
-    public function getChild($code);
-
     /**
      * @return mixed a new object instance
      */

+ 54 - 0
Admin/ParentAdminInterface.php

@@ -0,0 +1,54 @@
+<?php
+
+/*
+ * This file is part of the Sonata Project package.
+ *
+ * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Sonata\AdminBundle\Admin;
+
+/**
+ * This interface can be used to implement an admin that can have children
+ * admins, meaning admin that correspond to objects with a relationship with
+ * the object managed by this admin.
+ *
+ * @author Thomas Rabaix <thomas.rabaix@sonata-project.org>
+ */
+interface ParentAdminInterface
+{
+    /**
+     * add an Admin child to the current one.
+     *
+     * @param AdminInterface $child
+     */
+    public function addChild(AdminInterface $child);
+
+    /**
+     * Returns true or false if an Admin child exists for the given $code.
+     *
+     * @param string $code Admin code
+     *
+     * @return bool True if child exist, false otherwise
+     */
+    public function hasChild($code);
+
+    /**
+     * Returns an collection of admin children.
+     *
+     * @return array list of Admin children
+     */
+    public function getChildren();
+
+    /**
+     * Returns an admin child with the given $code.
+     *
+     * @param string $code
+     *
+     * @return AdminInterface|null
+     */
+    public function getChild($code);
+}