Передать параметры из отправки формы в указанный маршрут в Syfmony2 - PullRequest
1 голос
/ 03 октября 2011

У меня есть маршрут в моем routing.yml, который выглядит следующим образом:

pattern:  /admin/clients/{clientid}/projects/{projectid}/review/{id}/comments
defaults: { _controller: ShoutAdminBundle:Project:revcomm }
requirements:
    _method:  POST

Теперь на странице (странице комментариев) у меня есть форма, где пользователь вводит комментарий, а затем отправляетэто на эту страницу.Затем пользователь нажимает кнопку «Отправить», он будет возвращен на ту же страницу, но его комментарий будет отправлен в базу данных и затем отображен.

Код моей формы выглядит следующим образом:

        <form action="{{ path('ShoutAdminBundle_adminprojectreviewcommentssuccess') }}" method="post" {{ form_enctype(form) }} class="blogger">
            {{ form_errors(form) }}

            <p class="comments">
                {{ form_label(form.from, 'Your Name*', { 'attr': {'class': 'title'} }) }}
                {{ form_errors(form.from) }}
                {{ form_widget(form.from, { 'attr': {'class': 'textfield'}}) }}
            </p>
            <p class="comments">
                {{ form_label(form.comment, 'Your Comment*', { 'attr': {'class': 'title'} }) }}
                {{ form_errors(form.comment) }}
                {{ form_widget(form.comment, { 'attr': {'class': 'textfield'}}) }}
            </p>
            <p class="comments_save">
                <input type="submit" value="Post Your Comment" id="savebutton" class="savebutton" />
            </p>
            {{ form_rest(form) }} 
        </form>

Сейчас.Когда страница отображается, я получаю следующую ошибку:

Возникла исключительная ситуация во время рендеринга шаблона ("В маршруте" ShoutAdminBundle_route "отсутствуют некоторые обязательные параметры (" id "," projectid "").") в "ShoutAdminBundle: по умолчанию: projectreviewcomments.html.twig" в строке 54.

Как передать переменные {clientid}, {projectid} и {id} на страницу?Эти переменные уже объявлены на странице, вопрос в том, как их включить в отправку формы?

Cheers

1 Ответ

4 голосов
/ 03 октября 2011

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

class ProjectController extends Controller
{
    public function revcommAction($clientid, $projectid, $id)
    {
        // ...

        $params = array(
            'clientid'  => $clientid,
            'projectid' => $projectid,
            'id'        => $id
        );
        return $this->render('ShoutAdminBundle:Default:projectreviewcomments.html.twig', $params);
    }
}

Чтобы отобразить ссылку (или путь к действию формы) на этот контроллер в шаблоне, вы можете использовать path() для относительных и url() для абсолютных ссылок.Второй аргумент принимает любые аргументы, необходимые для построения ссылки, например:

<a href="{{ path('my_route_name', {'clientid': clientid, ...}) }}"></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...