通常,您可以使用此类代码来验证传入数据:
$post = Validate::factory($_POST);
$post->rules('field_name', array(
'not_empty' => null, // Must be non-empty.
'regex' => '/\d+/' // Must be a digit.
));
[是的,我知道将字段验证规则移到模型中]
在这种特殊情况下,我只想验证某些字段,只要它们实际存在于$ _POST数据中。
这是通过简单地省略not_empty
规则来完成的,还是regex
规则(在这种情况下)仍然不满足,并且验证失败? (我的假设)。
这看起来似乎可以解决问题(还没有尝试过)但是我想知道这是否是这种情况下的最佳做法,或者这是否是“正确的方法”......
$post->rules( /*... some rules I always want... */ );
if (isset($_POST['field_name'])) {
$post->rules( /* ... conditionally applied rules ... */ );
}
Kohana的方式是什么?
答案 0 :(得分:1)
not_empty只会确保该值不为空(空数组,null,false,'' - 更像是!empty()作为函数,而不是lang。构造)。
你可以手动这样做(正如你的建议),虽然回调看起来像你的情况下更有效的解决方案(这将检查你的条件,它真的必须是$ _POST,也许你想检查其他数组的那些键/条件也是如此?)。