【问题标题】:Perl Dancer: Getting data from formsPerl Dancer:从表单中获取数据
【发布时间】:2016-09-08 09:34:07
【问题描述】:

我是 Perl 新手,想知道:

  • 如何在 Perl dancer 中使用 html 表单中的数据?

我正在为以下示例而苦苦挣扎。我的index.tt 文件中有这样的表格:

 <form action="/hello/:username" method="get" name="">
        <h3>Please log in </h3>
          <input type="text" name="username" required=""/>
          <input type="password" name="senha" required=""/>               
          <button name="Submit" value="Login" type="Submit">Login</button>              
    </form>     

我想使用表单中的用户名并构建一个返回输入信息的页面。所以我检查了this 教程,并在我的Proyecto.pm 中完成了以下操作:

package Proyecto;
use Dancer ':syntax';
our $VERSION = '0.1';    


get '/' => sub {
template 'index';
};

get '/hello/:username' => sub {
my $username= params('username');
return "Hola $username";
};

但它不起作用。你们知道这里缺少什么吗?谢谢!

【问题讨论】:

    标签: forms perl cgi dancer


    【解决方案1】:
    <form action="/hello/:username" method="get" name="">
    

    将准确地调用/hello/:username 而无需替换。 HTML 无法神奇地替换部分源代码——无论后端使用的是 Dancer 还是其他任何东西。 (JavaScript 可以做到这一点。)

    get '/hello/:username' => sub {
    

    匹配对/hello/ 后跟任意字符串的所有调用,例如/hello/chungel/hello/Larry/hello/:username。最后一个会将值username 设置为param('username')

    您还添加了一个带有name="username" 的表单字段,该字段以一个键的两个值结束(一个来自 URL,一个来自表单)。

    最后:使用固定的 URL 作为表单操作:

    <form action="/hello" method="get" name="">
    

    get '/hello' => sub {
    

    将用户名作为 HTML 表单值(和 HTTP 参数)传递在这里没有任何优势。

    如果你真的想在 URL 中包含用户名,首先在路由定义中使用不同的名称:

    get '/hello/:url_username' => sub {
        return param('url_username');
    

    接下来,您需要使用 JavaScript 重写表单操作或使用 a Dancer before hook 重写目标 URL。

    【讨论】:

    • 我的编辑摘要应该是“请不要使用指向特定版本的 CPAN 链接,除非它专门针对该版本”
    • 对不起,你是对的。复制了这个而不是使用perldoc?
    • 如果你更喜欢 search.cpan.org 而不是 metacpan,你可以使用右上角的永久链接按钮,它会给出http://search.cpan.org/perldoc?Dancer
    • @这个链接指向一个锚点,所以一个可能不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2012-08-05
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多