私のフォームタイプは次のようになります
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
ですか?