Add support for bundle named entity
authorRaphaël Gertz <git@rapsys.eu>
Sat, 28 Aug 2021 08:59:51 +0000 (10:59 +0200)
committerRaphaël Gertz <git@rapsys.eu>
Sat, 28 Aug 2021 08:59:51 +0000 (10:59 +0200)
Cleanup

Form/Extension/Type/HiddenEntityType.php

index 2dfabf7fccd8b22f38ca312bd3f701c678692f21..7521633c25b4ddb993b13436097eab101372a8db 100644 (file)
@@ -35,26 +35,26 @@ class HiddenEntityType extends HiddenType implements DataTransformerInterface {
                $this->dm = $doctrine;
        }
 
-    /**
+       /**
         * Configure options
         *
-     * {@inheritdoc}
-     */
-    public function configureOptions(OptionsResolver $resolver) {
+        * {@inheritdoc}
+        */
+       public function configureOptions(OptionsResolver $resolver) {
                //Call parent
-        parent::configureOptions($resolver);
+               parent::configureOptions($resolver);
 
-        // Derive "data_class" option from passed "data" object
-        $class = function (Options $options) {
-            return isset($options['data']) && \is_object($options['data']) ? \get_class($options['data']) : null;
-        };
+               //Derive "data_class" option from passed "data" object
+               $class = function (Options $options) {
+                       return isset($options['data']) && \is_object($options['data']) ? \get_class($options['data']) : null;
+               };
 
-        $resolver->setDefaults([
-            'class' => $class
+               $resolver->setDefaults([
+                       #'data_class' => null,
+                       'class' => $class
                ]);
        }
 
-
        /**
         * Build form
         *
@@ -64,10 +64,17 @@ class HiddenEntityType extends HiddenType implements DataTransformerInterface {
                //Set class from options['class']
                $this->class = $options['class'];
 
-               //Check class
+               //Without class
                if (empty($this->class)) {
                        //Set class from namespace and field name
                        $this->class = str_replace('Form\\Extension\\Type', 'Entity\\' ,__NAMESPACE__).ucfirst($builder->getName());
+               //With bundle named entity
+               } elseif (
+                       ($pos = strpos($this->class, ':')) !== false &&
+                       !empty($entity = substr($this->class, $pos + 1))
+               ) {
+                       //Set class from namespace and entity name
+                       $this->class = str_replace('Form\\Extension\\Type', 'Entity\\' ,__NAMESPACE__).$entity;
                }
 
                //Set this as model transformer
@@ -82,7 +89,7 @@ class HiddenEntityType extends HiddenType implements DataTransformerInterface {
         * @return string The object id
         */
        public function transform($data): string {
-               // Modified from comments to use instanceof so that base classes or interfaces can be specified
+               //Modified from comments to use instanceof so that base classes or interfaces can be specified
                if ($data === null || !$data instanceof $this->class) {
                        return '';
                }