尝试用表单字段催化一些原型(prototype)页面。我的 Catalyst Controller 在提交表单时似乎没有从表单获取输入。
我已尝试尽可能减少模板和 Controller ,但仍然遇到此问题。
模板很简单:
<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>
Controller 是:
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));
}
当我浏览到表单,从选择选项中进行选择并提交时,我的调试日志只是显示
[调试] $VAR1 = {};
显然我错过了一些如此明显的东西,我只是没有看到它......请启发我。
最佳答案
你说得对。我怀疑您的 Catalyst 日志应该可以告诉您这里出了什么问题。问题不在于 Catalyst。
基本上,它是格式错误的 HTML - 每个表单输入都需要一个 name
参数,该参数可以在 POST 中传回服务器。
<select id="select02" name="select02">
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select>
id
用于 CSS,name
用于 FORM 处理。
尝试一下,你应该得到如下日志:
[11:31:28.499 16014:debug] Body Parameters are:
.-------------------+----------------------------------------.
| Parameter | Value |
+-------------------+----------------------------------------+
| select02 | cat1 |
| select06 | 2 |
'-------------------+----------------------------------------'
希望有帮助。
关于perl - 催化剂 $c->req->params 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9194140/