在Kohana 3中,我是否可以有条件地验证字段,只要它们设置在$ _POST中?

时间:2011-01-27 22:47:11

标签: php kohana kohana-3

通常,您可以使用此类代码来验证传入数据:

$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的方式是什么?

1 个答案:

答案 0 :(得分:1)

not_empty只会确保该值不为空(空数组,null,false,'' - 更像是!empty()作为函数,而不是lang。构造)。

你可以手动这样做(正如你的建议),虽然回调看起来像你的情况下更有效的解决方案(这将检查你的条件,它真的必须是$ _POST,也许你想检查其他数组的那些键/条件也是如此?)。