Почему моя форма не отправлена ​​в Symfony 4?

Мой контроллер действует так, как будто я никогда не нажимаю кнопку отправки.

Мой контроллер:

public function listAction(RegionsService $service)
{
    $regions = $service->getRegionList();

    $editForm = $this->createForm('App\Form\RegionListType');

    if ($editForm->isSubmitted())
    {
        dump('submitted');
        die();
    }

    if ($editForm->isSubmitted() && $editForm->isValid()) {

        $task = $editForm->getData();
        dump($task);
        die();
        ...
    }        

    return $this->render('parameter/region.list.html.twig', [
        'form'   => $editForm->createView(),
        'regions'   => $regions

    ]);
    ...

Моя форма:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('regionsset', TextType::class, array(
                'required' => false))
            ->add('save', SubmitType::class, array(
                'attr' => array('class' => 'save')));
}

Мой вид :

{{ form_start(form, {'action' : path('app_region_list')} ) }}
       {{ form_widget(form.regionsset, {'attr': {'class': 'foo'}}) }}
       {{ form_widget(form.save, { 'label': 'Save' }) }}
{{ form_end(form) }}

Когда я нажимаю кнопку отправки, контроллер никогда не переходит в первый тестовый if ($editForm->isSubmitted())

Что я упустил ?

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
5
0
3 260
2

Ответы 2

Вы забыли обработать запрос в своей форме. После создания формы ($ editForm) вы должны обработать запрос следующим образом:

$editForm->handleRequest($request);

После этого метод isSubmitted() вернет true.

Большое спасибо за ответ (очень часто это было очевидно!)

Yves 14.05.2018 13:26

Попробуйте этот код. Это решит проблему.

use Symfony\Component\HttpFoundation\Request;
.
.
.
public function listAction(Request $request, RegionsService $service )
{
    $regions = $service->getRegionList();

    $editForm = $this->createForm('App\Form\RegionListType');
    $editForm->handleRequest($request);

    if ($editForm->isSubmitted() && $editForm->isValid()) {

        $task = $editForm->getData();
        dump($task);
        die();
        ...
    }        

    return $this->render('parameter/region.list.html.twig', [
        'form'   => $editForm->createView(),
        'regions'   => $regions

    ]);
    ...

Большое спасибо за ответ (очень часто это было очевидно!)

Yves 14.05.2018 13:25

Другие вопросы по теме

Похожие вопросы