Катализатор $c->req->params пуст?
Попытка Катализировать некоторые страницы прототипа с полями формы. Мой контроллер Catalyst, похоже, не получает входные данные из формы при ее отправке.
Я пытался уменьшить шаблон и контроллер, насколько я могу, и я все еще получаю эту проблему.
Шаблон просто:
<body>
<form action="/minimal-testing" method="get">
<select id="select02">
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select>
<select id="select06">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit" value="submit" title="submit" />
</form>
<p> Hello, params says: </p>
<p>
[% FOR param IN params ; param.key ; ' = ' ; param.value; END %]
</p>
</body>
Контроллер это:
sub minimal_testing :Path('minimal-testing') :Args(0) {
use Data::Dumper;
my ( $self, $c ) = @_;
$c->stash(params=>$c->req->params);
$c->stash(template => "dynamic/minimal-testing.tt");
$c->log->debug(Dumper($c->request->params));
}
Когда я просматриваю форму, выбираю из опций select и отправляю, мой журнал отладки просто говорит
[debug] $VAR1 = {};
Очевидно, я что-то упускаю настолько очевидное, что просто не вижу этого... пожалуйста, просветите меня.
1 ответ
Вы правы. Я подозреваю, что ваш журнал Catalyst должен дать вам подсказку, что здесь происходит не так. Проблема не с Катализатором.
По сути, это искаженный HTML - каждый из ваших входов в форму name
параметр, который может быть передан обратно на сервер в POST.
<select id="select02" name="select02">
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select>
id
для CSS, name
для обработки ФОРМ.
Попробуйте это, и вы должны получить запись как:
[11:31:28.499 16014:debug] Body Parameters are:
.-------------------+----------------------------------------.
| Parameter | Value |
+-------------------+----------------------------------------+
| select02 | cat1 |
| select06 | 2 |
'-------------------+----------------------------------------'
Надеюсь, это поможет.