Форма во встроенном контроллере не отправлена - PullRequest
0 голосов
/ 11 мая 2018

У меня есть форма, встроенная в модал, я использовал встроенный контроллер, чтобы справиться с этим.

Это мой код: Контроллер:

 public function affectProduitsAction(Pack $pack)
{
    $request = $this->get('request_stack')->getMasterRequest();

    $form = $this->createForm(PackAffectProduitType::class, $pack);

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) { /*success*/

    }
    return $this->render('pack/affect_produits.html.twig', [
        'packForm' => $form->createView(),
    ]);
}

Макет: рендеринг встроенного контроллера:

 <div class="button-add">
                <a class="btn btn-sm btn-primary btn-upper" data-target="#modalAffectProduit" data-toggle="modal">
                    <i class="os-icon os-icon-ui-22"></i>
                    <span>Affecter des produits</span>
                </a>
            </div>
            {{ render(controller(
                'AppBundle:Pack:affectProduits',
                {'pack': pack }
            )) }}

Модал: отрисовывается от встроенного контроллера:

<div aria-hidden="true" aria-labelledby="exampleModalLabel" class="modal fade" id="modalAffectProduit" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">
                Affecter des produits
            </h5>
            <button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true"> &times;</span></button>
        </div>
        {{ form_start(packForm, {'action':
            {# the problem is here I don't know how call the embedded controller #}
        }) }}
            <div class="modal-body">
                  ......
            </div>
            <div class="modal-footer">
                <button class="btn btn-secondary" data-dismiss="modal" type="button"> Annuler</button>
                <button class="btn btn-primary" type="button"> Affecter</button>
            </div>
        {{ form_end(packForm) }}
    </div>
</div>

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

1 Ответ

0 голосов
/ 11 мая 2018

Я думаю, что вы должны добавить маршрутизацию на свой контроллер, только тогда форма будет знать путь, куда отправлять запрос.И добавьте параметр Request $ request к действию

public function affectProduitsAction(Request $request, Pack $pack)
{
.
.
.

и удалите

$request = $this->get('request_stack')->getMasterRequest();
...