0

私のフォームタイプは次のようになります

class ApplicationFormType extends AbstractType
{
        public function buildForm(FormBuilderInterface $builder, array $options)
    {
            $nurse = new Type\NurseType();
            $builder
                ->add('nurse', $nurse)
                ->add('nurse_type', 'entity', array(
                    'class' => 'Acme\MainBundle\Entity\NurseType',
                    'expanded' => true,
                    'multiple' => false,
                ))
                ->add('nursing_support', 'checkbox', array(
                    'required' => false,
                ))
                ->add('nursing', new Type\NursingType());
            $builder->addEventSubscriber(new ApplicationDynamicNursingSubscriber());
        }
}

に応じNursingTypeて次のように見えます

class NursingType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('street')
            ->add('zipcode')
            ->add('city')
            ->add('email')
            ->add('phone');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array('data_class' => 'Acme\MainBundle\Entity\Nursing'));
    }

イベントは次のようになります(および私がやりたいこと)

class ApplicationDynamicNursingSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents() {
        return array(
            FormEvents::POST_BIND => 'onPostBind',
        );
    }

    public function onPostBind(FormEvent $event) {
        $data = $event->getData();
        $form = $event->getForm();
        if (!$data->getNursingSupport()) {
            $data->setNursing(NULL);
            $form->get('nursing')->setRequired(false);
        }
    }
}

setRequiredフィールドのメソッドがないため、フォームの送信時にイベント スクリプトが失敗します。nursingチェックボックスがチェックされていない場合、Symfony2 でエンティティを不要にするにはどうすればよいnursing_supportですか?

4

1 に答える 1

1

フォーム イベントにフックして検証する代わりに、Callback メソッドを使用してエンティティの組み込み検証を使用して、特定のフィールドが必要かどうかを判断してみませんか。

http://symfony.com/doc/current/reference/constraints/Callback.html

于 2013-03-28T16:18:07.580 に答える