/** * define form fields. * * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->add('status', ChoiceType::class, ['label' => 'form.page.type.status.label', 'choices' => ['form.page.type.status.choice.label.draft' => PageStatus::DRAFT, 'form.page.type.status.choice.label.published' => PageStatus::PUBLISHED, 'form.page.type.status.choice.label.unpublished' => PageStatus::UNPUBLISHED, 'form.page.type.status.choice.label.scheduled' => PageStatus::SCHEDULED], 'choices_as_values' => true, 'attr' => ['data-refreshOnChange' => 'true']])->add('image', MediaType::class); // manage conditional related status in preset data $builder->get('status')->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $data = $event->getData(); $form = $event->getForm(); self::manageRelatedStatus($data, $form->getParent()); }); // manage conditional related status in pre submit (ajax call to refresh view) $builder->get('status')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $event->getData(); self::manageRelatedStatus($data, $form->getParent()); }); }
/** * define form fields * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->add('slug', null, array('label' => 'form.page.type.slug.label'))->add('status', 'choice', array('label' => 'form.page.type.status.label', 'choices' => array(Article::DRAFT => 'form.page.type.status.choice.label.draft', Article::PUBLISHED => 'form.page.type.status.choice.label.published', Article::UNPUBLISHED => 'form.page.type.status.choice.label.unpublished', Article::SCHEDULED => 'form.page.type.status.choice.label.scheduled'), 'attr' => array('data-refreshOnChange' => "true")))->add('image', 'media'); // manage conditional related status in preset data $builder->get('status')->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $data = $event->getData(); $form = $event->getForm(); self::manageRelatedStatus($data, $form->getParent()); }); // manage conditional related status in pre submit (ajax call to refresh view) $builder->get('status')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $event->getData(); self::manageRelatedStatus($data, $form->getParent()); }); }