在滥用Google一个多小时之后,我找不到这个问题的答案:
将form_validation.php用于验证规则时,是否可以将动态值传递给回调?
array(
'field' => 'passwordrepeat',
'label' => 'סיסמא חוזרת',
'rules' => 'passwordsMatch['myDynamicValue']'
),
这显然不起作用,因为它通过了我的动态价值观#34;作为一个字符串。 现在,因为这个配置文件很早就加载了,所以这个唯一可用的资源是CI_Loader,它没有多大帮助,所以我无法访问输入类。
所以我的问题: 动态值是否可以传递给配置文件,或者该规则是否应该在控制器本身中写入内联?
答案 0 :(得分:2)
$this->form_validation->set_rules('password1', 'Password', 'trim|required|matches[password2]');
$this->form_validation->set_rules('password2', 'Verify Password', 'trim|required');
这就是我在两个密码上设置表单验证的方法。这就是您设置所有规则后的内容
if ($this->form_validation->run() == FALSE)
{
//Validation failed
}
else
{
//Validation suceeded carry on
}
以下是某些文档的链接
http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#validationrules
答案 1 :(得分:0)
这个问题的答案有点令人尴尬。
解决方法是,您可以将其他字段名称传递给回调。 但是,请记住,您传递的是字段,而不是实际值。
要获得实际值,您需要通过$ _POST ['field']访问它。
例如内置的匹配功能
public function matches($str, $field)
{
if ( ! isset($_POST[$field]))
{
return FALSE;
}
$field = $_POST[$field];
return ($str !== $field) ? FALSE : TRUE;
}
我觉得有点傻:)
答案 2 :(得分:0)
问题的答案有点棘手,但很容易理解。 问题的解决方案就在这里。
在form_validation.php
文件夹下创建application/config/
文件。
并且过去的代码如下。
$config = array(
array(
'field' => 'passwordrepeat',
'label' => 'סיסמא חוזרת',
'rules' => 'passwordsMatch['myDynamicValue']'
),
);
规则将自动加载到$this->form_validation->run();
此方法。
此外,您可以附加更多数组,我的意思是更多不同控制器的规则。
希望这会对你有所帮助。