尝试使用表单字段催化一些原型页面。我的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));
}
当我浏览表单,从选择选项中选择并提交时,我的调试日志只是说
[debug] $VAR1 = {};
显然我错过了一些如此明显的东西,我只是没有看到它......请赐教。
答案 0 :(得分:2)
你是对的。我怀疑你的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 |
'-------------------+----------------------------------------'
希望有所帮助。