Mojolicious参数验证

时间:2018-04-15 22:12:44

标签: perl mojolicious mojolicious-lite

我有以下代码:

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 paremter我使用以下链接连接上述网页:http://myserver:3000?x=2&y=1

it prints =>你好1。 即使有$ v-> required('y') - >喜欢(q / [A-Z] /);

这可能是我的问题?

1 个答案:

答案 0 :(得分:6)

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;