From e1435d0883df8446902c40cae7b7f300bf94ccda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sat, 7 Nov 2015 09:38:12 +0100 Subject: [PATCH] fix form to jump to create a custom field --- Controller/CustomFieldsGroupController.php | 19 ++++++++++++++----- .../CustomFieldsGroupToIdTransformer.php | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Controller/CustomFieldsGroupController.php b/Controller/CustomFieldsGroupController.php index a5c67e95f..9e0794d73 100644 --- a/Controller/CustomFieldsGroupController.php +++ b/Controller/CustomFieldsGroupController.php @@ -7,6 +7,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Doctrine\ORM\Query; use Chill\CustomFieldsBundle\Entity\CustomFieldsGroup; use Chill\CustomFieldsBundle\Entity\CustomField; +use Chill\CustomFieldsBundle\Form\DataTransformer\CustomFieldsGroupToIdTransformer; /** * CustomFieldsGroup controller. @@ -210,17 +211,25 @@ class CustomFieldsGroupController extends Controller $fieldChoices[$key] = $customType->getName(); } - return $this->createFormBuilder(new CustomField(), array( + $customfield = (new CustomField()) + ->setCustomFieldsGroup($customFieldsGroup); + + $builder = $this->get('form.factory') + ->createNamedBuilder(null, 'form', $customfield, array( 'method' => 'GET', - 'action' => $this->generateUrl('customfield_new', - array('cfGroup' => $customFieldsGroup->getId())), + 'action' => $this->generateUrl('customfield_new'), 'csrf_protection' => false )) ->add('type', 'choice', array( 'choices' => $fieldChoices )) - ->add('submit', 'submit') - ->getForm(); + ->add('customFieldsGroup', 'hidden') + ->add('submit', 'submit'); + $builder->get('customFieldsGroup') + ->addViewTransformer(new CustomFieldsGroupToIdTransformer( + $this->getDoctrine()->getManager())); + + return $builder->getForm(); } /** diff --git a/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php b/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php index 662ef42f1..f2dac9b0c 100644 --- a/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php +++ b/Form/DataTransformer/CustomFieldsGroupToIdTransformer.php @@ -33,6 +33,14 @@ class CustomFieldsGroupToIdTransformer implements DataTransformerInterface if (null === $customFieldsGroup) { return ""; } + + if (!$customFieldsGroup instanceof CustomFieldsGroup) { + throw new TransformationFailedException(sprintf('Transformation failed: ' + . 'the expected type of the transforme function is an ' + . 'object of type Chill\CustomFieldsBundle\Entity\CustomFieldsGroup, ' + . '%s given (value : %s)', gettype($customFieldsGroup), + $customFieldsGroup)); + } return $customFieldsGroup->getId(); } @@ -49,6 +57,14 @@ class CustomFieldsGroupToIdTransformer implements DataTransformerInterface if (!$id) { return null; } + + if ($id instanceof CustomFieldsGroup) { + throw new TransformationFailedException(sprintf( + 'The transformation failed: the expected argument on ' + . 'reverseTransform is an object of type int,' + . 'Chill\CustomFieldsBundle\Entity\CustomFieldsGroup, ' + . 'given', gettype($id))); + } $customFieldsGroup = $this->om ->getRepository('ChillCustomFieldsBundle:customFieldsGroup')->find($id)