使用 CodeIgniter 时Form_validation
类,该set_rules()
方法允许用户向其表单字段添加无限数量的检查。这些规则通常都定义在同一个地方,就在run()
方法被调用。
有效示例:
// Require the user to be a werewolf.
$this->form_validation->set_rules('werewolf', 'Are you a Werewolf?', 'required');
// If the form validates.
if ($this->form_validation->run())
{
// [...]
(不,我实际上并没有经营狼人网站)
代码很有意义,而且很容易理解。然而,有时,这可能是不可取的。例如,也许你不关心用户是不是狼人除非是午夜。您的代码可能如下所示:
无效示例
// If it is midnight.
if (date('G') == '0')
{
// Require the user to be a werewolf.
$this->form_validation->set_rules('werewolf', 'Are you a Werewolf?', 'required');
}
// If the form validates.
if ($this->form_validation->run())
{
// [...]
THIS 行不通
至少,要到半夜才行。
默认情况下,$this->form_validation->run()
回报FALSE
如果没有声明任何规则。在第二个示例中,除非是午夜,否则不会设置任何规则,因此表单永远不会验证。从逻辑上讲,人们会认为如果没有规则,那么无论如何该表单都应该有效。相反,它fails无论。
/系统/库/Form_validation :: run()
(第 293-297 行)
// No validation rules? We're done...
if (count($this->_config_rules) == 0)
{
return FALSE;
}
我的问题是:
为什么这是默认返回值?我改一下可以吗?
@Nathanael - 你是对的,如果不查看这个问题是否已在 V3 中解决,我就记不起来。
处理这个问题的两种方法:
1)(这不会像您当前设置的代码那样工作,但是使用小柚木就可以了) - 始终在每个字段上设置“修剪”。这将触发所有验证代码。即使您不想做任何必需的事情,它也是重新填充表单的旧解决方法。
2) 更好 - 为始终检查的字段制定自定义规则,并在规则内有条件地要求它。
请记住,验证库规则实际上只是库中的函数,因此在自定义规则中您可以执行以下操作:
$this->validation->required($str);
输入代码来检查您的输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)