【问题标题】:Mojolicious Parameter ValidationMojolicious 参数验证
【发布时间】:2018-09-25 14:26:27
【问题描述】:
我有以下代码:
get '/:foo' => sub {
my $c = shift;
my $v = $c->validation;
my $foo = $c->param('y');
$c->render(text => "Hello from $foo.") if $v->required('y')->like(q/[A-Z]/);
};
并想验证 http requeste 上的 y 参数,我使用以下方式连接到上述网页:http://myserver:3000?x=2&y=1
它打印 => 来自 1 的 Hello。
甚至还有 $v->required('y')->like(q/[A-Z]/);
这可能是我的问题?
【问题讨论】:
标签:
perl
mojolicious
mojolicious-lite
【解决方案1】:
Mojolicious 验证使用a fluent interface,因此大多数方法都返回验证对象。对象默认为真,因此您的条件始终为真。
相反,您可以检查
-
->is_valid() – 当前主题的验证是否成功,或者
-
->has_error() – 是否有任何验证错误。
您通过在验证对象上调用->required('name') 或->optional('name') 来引入新的验证主题。所以你可以写:
$c->render(text => "Hello from $foo.")
if $v->required('y')->like(q/[A-Z]/)->is_valid;
或
$v->required('y')->like(q/[A-Z]/);
$c->render(text => "Hello from $foo.") unless $v->has_error;