【问题标题】:Respect Validation for two fields尊重两个领域的验证
【发布时间】:2018-01-18 16:26:17
【问题描述】:
我需要通过 Respect 验证表单数据。这些字段中的至少一个必须具有值:$vfname 和 $vlname。经过一番反复试验,我发现我可以用notEmpty()进行连接和测试:
v::StringType()->notEmpty()->assert($vfname . $vlname)
但这似乎真的很hacky。是否有更好的验证方法,以使这些字段中的至少一个具有值?
【问题讨论】:
标签:
php
validation
respect-validation
【解决方案1】:
验证支持使用OneOf 规则的OR 操作。此外,如果您正在验证表单数据,Key 规则会很方便:
v::oneOf(
v::key('vfname', v::stringType()->notEmpty()),
v::key('vlname', v::stringType()->notEmpty())
)
->assert(['vfname' => $vfname, 'vlname' => $vlname]);
【解决方案2】:
那为什么不这样呢?
v::boolType()->validate(!empty($vfname) || !empty($vlname));
注意:使用empty() 的一个优点是它不会引发任何Undefined variable 通知,如果这是你的事。