Php 在Kohana 3中,只有当字段';在$U POST中重新设置?
通常,您可以使用如下代码来验证传入数据:Php 在Kohana 3中,只有当字段';在$U POST中重新设置?,php,kohana,kohana-3,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. )); [是,我知道将字段验证规则移动到模型] 在这种特殊情况下,我只想验证某些字段,前提是它们实际上存在于$\u
$post = Validate::factory($_POST);
$post->rules('field_name', array(
'not_empty' => null, // Must be non-empty.
'regex' => '/\d+/' // Must be a digit.
));
[是,我知道将字段验证规则移动到模型]
在这种特殊情况下,我只想验证某些字段,前提是它们实际上存在于$\u POST数据中
这是通过省略not_empty
规则来实现的,还是regex
规则(在本例中)仍然不满足,并且验证失败?(我的假设)
这看起来可能会解决问题(还没有尝试过),但我想知道这是否是这种情况下的最佳实践,或者这是否是“正确的方法”
科哈纳路是什么 not_empty只会确保值不是空的(空数组、null、false,--更像是!empty()作为函数,而不是lang.construct)
您可以手动执行此操作(如您所建议的),尽管回调在您的情况下似乎是一个更有效的解决方案(这将检查您的条件,它是否真的必须是$\u POST,也许您还想检查其他数组的那些键/条件)。在这种情况下,我想更新一个已经保存到数据库中的模型。我当然需要ID来检索原始记录。除此之外,如果只向我传递了一个ID和一个“描述”,我不需要验证已经存在的其他字段,就像我在创建过程中所做的那样。这有意义吗?您的意思是说,如果存在/不存在信息,那么在模型上使用一个回调函数来验证信息吗?或者别的什么?是的,单回调方法可以做到:)
$post->rules( /*... some rules I always want... */ );
if (isset($_POST['field_name'])) {
$post->rules( /* ... conditionally applied rules ... */ );
}