[英]Perl Dancer: Getting data from forms
我是一个Perl新手,想知道:
我正在努力使用以下示例。 我的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>
我想使用表单中的用户名并构建一个返回键入信息的页面。 所以我查看了本教程,并在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";
};
但它不起作用。 你们知道这里缺少什么吗? 谢谢!
<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重写表单操作,或者before
挂钩before
使用Dancer重写目标URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.