perl - 催化剂 $c->req->params 为空?

标签 perl forms parameters catalyst

尝试用表单字段催化一些原型(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/

相关文章:

html - 为什么表单标签在 div 之后不起作用

java - Java中的惰性参数类型?

c# - 是否可以使抽象方法的参数列表具有可覆盖的长度和类型?

perl - 使用 IPC::Run with timeouts 导致 Modification of a read-only value 错误

arrays - 如何在 perl 中分解数组散列中的公共(public)元素?

javascript - 当没有更多无效字段时启用禁用按钮

PHP迭代给定月份和年份的月份天数

regex - 如何在 Perl 中替换所有 HTML 编码的重音符号?

multithreading - 强制 perl 程序使用线程使用所有 CPU 容量

c# - 在 ASP.NET MVC 中提交表单后显示值的最佳实践