Пост-параметры как входные данные действия - PullRequest
3 голосов
/ 10 апреля 2011

Я получаю следующее сообщение об ошибке после отправки формы:

Контроллер "Foo \ ModelBundle \ Controller \ PostController :: createAction ()" требует, чтобы вы указали значение для "$ title"аргумент (потому что нет никакого значения по умолчанию или потому что после этого есть необязательный аргумент).

Форма не создается функцией формы фреймворка Symfony, это просто обычный HTML в шаблоне ветки:

<form action="{{ path('post') }}" method="post">
        Title: <input name="title"><br>
        Author: <input name="author"><br>
        Content: <input name="content"><br>
        <input type="submit">
</form>

Это информация о маршруте для почтового маршрута:

post:
        pattern:        /post
        defaults:       { _controller: FooModelBundle:Post:create }
        requirements:
                _method:        POST

Это определение действия создания:

public function createAction($title, $author, $content) {

Профилировщик Symfonyпоскольку запрос показывает мне, что $ title, $ author и $ content установлены на правильные значения.

Как правильно указать действие с необходимыми параметрами?

Разве они не должны заполняться платформой значениями в запросе POST?

Я использую Symfony 2.0 PR 10.

Здесь также можно поместить это: http://forum.symfony -project.org / Viewtopic.php? е = 23 & т = 34427

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Причина неиспользования функций создания и проверки форм в фреймворках заключается в следующем:

Я хотел бы получить быстрый тест действия с некоторыми динамическими данными.На данный момент я не хочу писать x строк кода для привязки данных и создания форм.Это следующий шаг.

Что я ошибся, так это концепция параметров в маршрутизации.

Я подумал, что если я использую / {foo} / {bar} в качестве сопоставителя,это простой запрос GET.Параметры будут введены в контроллер без дальнейшей настройки.Если я теперь использую запрос POST, параметры также должны быть заполнены действием.

Дело в том, что {foo} и {bar} являются частями URI, а не какими-либо GET-параметрами, такими как? Val= х.Параметры GET / POST не имеют ничего общего с входными параметрами для действия.Они доступны через объект запроса и, конечно, не передаются действию в качестве параметров метода.

1 голос
/ 18 мая 2012

для этой функции: public function createAction($title, $author, $content)

маршрутизация должна быть такой:

post:
    pattern:        /post/{title}/{$author}/{content}
    defaults:       { _controller: FooModelBundle:Post:create }
    requirements:
            _method:        POST
1 голос
/ 11 апреля 2011

Я пытался ответить на этот вопрос для вас, когда вы первоначально разместили вопрос по адресу http://forum.symfony -project.org / viewtopic.php? F = 23 & t = 34427 & p = 115961 # p115961

Идея состоит в том, чтобы использовать возможности генерации форм в каркасе и получать данные через объект запроса.

Надеюсь, вы найдете это очень полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...