1

我需要尊重验证表单数据。这些字段中的至少一个必须具有值:$vfname$vlname。经过一些试验和错误,我发现我可以连接和测试notEmpty()

v::StringType()->notEmpty()->assert($vfname . $vlname)

但这似乎真的很hacky。有没有更好的方法来验证,以便这些字段中的至少一个具有值?

4

2 回答 2

2

验证支持OR使用OneOf规则的操作。此外,如果您正在验证表单数据,该Key规则将很方便:

v::oneOf(
    v::key('vfname', v::stringType()->notEmpty()),
    v::key('vlname', v::stringType()->notEmpty())
)
->assert(['vfname' => $vfname, 'vlname' => $vlname]);
于 2018-01-18T08:26:17.007 回答
0

那为什么不这样呢?

v::boolType()->validate(!empty($vfname) || !empty($vlname));

注意:使用的一个优点empty()是它不会引起任何Undefined variable通知,如果这是你的事。

于 2018-01-17T20:34:52.673 回答