【问题标题】: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;
    

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2019-06-01
      相关资源
      最近更新 更多