форма ветки в модальном окне без отправки данных - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь отправить форму, которая появляется в модальном окне. Я знаю, что форма работает, если я запускаю ее как отдельное окно, однако в модальном режиме она, похоже, ничего не передает и не возвращает ошибок или чего-либо еще в Symfony.

Вот как я называю это в ветке:

    <button data-toggle="modal" href="{{ path('new_ingredient') }}" data-target="#ingredient_new">Add a new ingredient</button>


<div class="modal fade" id="ingredient_new">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                {{ render(controller('App\\Controller\\DishController:newIngredient')) }}

            </div>
        </div>
    </div>

</div>

А вот мой контроллер:

/**
 * @Route("/ingredient/new", name="new_ingredient")
 */
public function newIngredient(Request $request)
{

    $ingredient = new Ingredient();

    $form = $this->createForm(NewIngredientType::class, $ingredient);

    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid()) {
        $ingredient = $form->getData();
        $em = $this->getDoctrine()->getManager();

        $em->persist($ingredient);
        $em->flush();


        return $this->redirectToRoute('dashboard');

    }

    return $this->render('ingredients/new.html.twig', array(
            'form' => $form->createView())
    );
}

Я чувствую, что в ветке чего-то не хватает , Есть ли что-то очевидное, что мне не хватает? Как я уже говорил, сама форма работает, если я вызываю ее отдельно, но после отправки она ничего не делает в модальном режиме.

Редактировать Вот сама форма; это довольно просто, только одно поле и отправка

class NewIngredientType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options); // TODO: Change the autogenerated stub

        $ingredient = new Ingredient();

        $builder

            ->add('name', TextType::class, array(
                'attr' => array('class' => 'form-control'),

            ))


            ->add('save', SubmitType::class, array(
                'label' => 'Save',
                'attr' => array('class' => 'btn btn-primary mt-3')
            ))
            ->getForm();

    }

}

Веточка, которая используется для создания модального окна, выглядит так:

{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}

1 Ответ

0 голосов
/ 19 апреля 2020

хорошо, после некоторого поиска и с помощью @msg выше, я нашел решение.

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

Это вариант того, что я использовал

{{ form_start(form, {'action' : path('new_ingredient')}) }}
{{ form_widget(form) }}
{{ form_end(form) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...