我有以下代码:
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 请求的 y
参数,我使用以下方式连接到上述网页:http://myserver:3000?x=2&y=1
它打印 Hello from 1.
即使有 $v->required('y')->like(q/[A-Z]/);
这可能是我的问题?
最佳答案
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;
关于perl - Mojolicious 参数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847290/