codeigniter(和回调)中的form_validation配置文件

时间:2014-03-13 21:17:36

标签: php codeigniter validation

在滥用Google一个多小时之后,我找不到这个问题的答案:

将form_validation.php用于验证规则时,是否可以将动态值传递给回调?

        array(
                    'field' => 'passwordrepeat',
                    'label' => 'סיסמא חוזרת',
                    'rules' => 'passwordsMatch['myDynamicValue']'
            ),

这显然不起作用,因为它通过了我的动态价值观#34;作为一个字符串。 现在,因为这个配置文件很早就加载了,所以这个唯一可用的资源是CI_Loader,它没有多大帮助,所以我无法访问输入类。

所以我的问题: 动态值是否可以传递给配置文件,或者该规则是否应该在控制器本身中写入内联

3 个答案:

答案 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();此方法。

此外,您可以附加更多数组,我的意思是更多不同控制器的规则。

希望这会对你有所帮助。