Perl mojolicous参数验证:可选,值为空

Perl mojolicous参数验证:可选,值为空,perl,mojolicious,Perl,Mojolicious,在我的应用程序中,我使用验证来验证和过滤我的输入数据,然后再使用要保存到数据库中的验证数据(使用DBIX::Class) 我有几个可选字段,但当这些字段为空时,它们永远不会显示在已验证的输出中,如果要保存的编辑从填充的可选字段变为空的可选字段,则可能会出现问题。然后在输出中不拾取空数据 是否有适当的方法从验证的角度来处理这些问题?比如告诉验证器该值是未定义/空字符串,并且该字段有效。或者什么是一个好的方法 为了保存编辑,我只想将传递的字段馈送到适当的DBIx::Class::Row对象中并对其进

在我的应用程序中,我使用验证来验证和过滤我的输入数据,然后再使用要保存到数据库中的验证数据(使用DBIX::Class)

我有几个可选字段,但当这些字段为空时,它们永远不会显示在已验证的输出中,如果要保存的编辑从填充的可选字段变为空的可选字段,则可能会出现问题。然后在输出中不拾取空数据

是否有适当的方法从验证的角度来处理这些问题?比如告诉验证器该值是未定义/空字符串,并且该字段有效。或者什么是一个好的方法

为了保存编辑,我只想将传递的字段馈送到适当的
DBIx::Class::Row
对象中并对其进行更新。因此,缺少空可选字段是一个问题

下面是使用验证的一个简单示例:

use strict;
use warnings;
use utf8;
use Modern::Perl;
use Mojolicious::Validator;

my $validator = Mojolicious::Validator -> new;
my $v         = $validator -> validation;

$v -> input({foo => '', bar => 'bar' });

$v -> optional('foo');
$v -> required('bar');


for my $f ( @{ $v -> failed } ) {
  say sprintf '"%s" failed validation, reason: "%s"', $f, $v -> error($f) -> [0];
}

for my $f ( @{ $v -> passed } ) {
  say sprintf '"%s" passed validation, value: "%s"', $f, $v -> param($f);
}
嗯,似乎
$v->output({%{$v->output},'foo'=>'})
是一种方法,似乎有点粗俗,嗯,似乎
$v->output({%{$v->output},'foo'=>''})是一种方法,但似乎有点老土