Как отправить изменения на action со slug в Symfony 3?

420
02 сентября 2017, 00:26

Пытаюсь динамически генирировать форму с динамическим Action,

https://gist.github.com/vasilukwolf/7c863d26103fa56b0abde63c2518e8f5

Однако формируя url получаю ошибку,

An exception has been thrown during the rendering of a template
("Some mandatory parameters are missing ("slug") 
to generate a URL for route "changePass".").

Хотя согласно документации досточно убрать это из view и должно подхватывать из контроллера. Однако action url не формируется. Возникает два вопроса: как его формировать правильно и почему?

Answer 1

Из документации необходимо вызвать методы setAction и setMethod

$form = $this->createFormBuilder()
     ->setAction($this->generateUrl('changePass', array('slug' => $row['id'])))
     ->setMethod('POST')
     ->add('pass_check', TextType::class,array('label' => 'Старый пароль'))
    ->add('pass', TextType::class,array('label' => 'Новый пароль'))
    ->add('repeat_pass', TextType::class,array('label' => 'Повторите пожалуйста пароль'))
    ->add('save', SubmitType::class, array('label' => 'Изменить пароль'))
    ->getForm();

А вывод соответственно будет таким:

return $this->render("WebBundle:Account:changepass.html.twig",
    array(
        'username'=> $row['username'],
        'form' => $form->createView()
));
Answer 2

К сожалению пришлось сделать так в контроллере:

        $form = $this->createFormBuilder()
        ->add('pass_check', TextType::class, array('label' => 'Старый пароль'))
        ->add('pass', TextType::class, array('label' => 'Новый пароль'))
        ->add('repeat_pass', TextType::class, array('label' => 'Повторите пожалуйста пароль'))
        ->add('save', SubmitType::class, array('label' => 'Изменить пароль'))
        ->getForm();
    return $this->render("WebBundle:Account:changepass.html.twig",
        array(
            'username' => $row['username'],
            'form' => $form->createView(),
            'method' => 'POST',
            'slug' => $slug,
        ));

и так во вьюхе:

       {% extends "::base.html.twig" %}
    {% block body %}
        <h1>Смена пароля у пользователя {{ username }}</h1>
        {{ form_start(form, {'action': path('updatePass',
{'slug': slug}), 'method': 'POST'}) }}
        {{ form_widget(form) }}
        {{ form_end(form) }}
    {% endblock %}
READ ALSO
Миграции Symfony 3. (PostgreSQL). Проблема с diff

Миграции Symfony 3. (PostgreSQL). Проблема с diff

Всем приветПроект на Symfony 3 и PostgreSQL

392
Добавление записи в таблицу только если ячейки с таким значением еще нет в таблице

Добавление записи в таблицу только если ячейки с таким значением еще нет в таблице

мне нужно составить таблицу с заказчикаи по IP и проверять есть ли уже в таблице такой IP Если есть то ничего не делать если нет то добавить...

308
Помогите найти ошибку в Jquery!

Помогите найти ошибку в Jquery!

Я начал изучать Jquery, и у меня появилась проблемаПосле получения ответа с content

311