Проверка параметров Mojolicious

У меня есть следующий код:

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]/);
};

и хочу проверить параметр y в HTTP-запросе. Я подключаюсь к указанной выше веб-странице, используя: http://myserver:3000?x=2&y=1

он печатает => Привет от 1. даже есть $v->required('y')->like(q/[A-Z]/);

в чем тут может быть моя проблема?


person smith    schedule 15.04.2018    source источник


Ответы (1)


Проверка Mojolicious использует гибкий интерфейс, поэтому большинство методов возвращают объект проверки. Объекты правдивы по умолчанию, поэтому ваше условие всегда истинно.

Вместо этого вы можете проверить

  • ->is_valid() — прошла ли проверка для текущей темы успешно, или
  • ->has_error() — были ли ошибки проверки.

Вы вводите новую тему проверки, вызывая ->required('name') или ->optional('name') для объекта проверки. Итак, вы могли бы написать:

$c->render(text => "Hello from $foo.")
  if $v->required('y')->like(q/[A-Z]/)->is_valid;

or

$v->required('y')->like(q/[A-Z]/);
$c->render(text => "Hello from $foo.") unless $v->has_error;
person amon    schedule 16.04.2018