在我的应用程序中,在使用经过验证的数据保存到数据库之前(使用DBIX :: Class),我使用验证来验证和过滤输入数据。
我有一些可选字段,但是当这些字段为空时,它们永远不会出现在经过验证的输出中,如果要保存的编辑从具有填充的可选字段变为空的可选字段,这可能是个问题。然后,在输出中不会拾取空数据。
从验证方面来看,是否有适当的方法来处理这些问题?就像告诉验证者,该值是undef / empty字符串,并且该字段有效。还是有什么好的方法?
为了保存编辑,我只想将传递的字段输入正确的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);
}