如何使用codeigniter分离单个文件中的回调逻辑?

时间:2011-09-03 05:30:52

标签: php codeigniter

我使用config.php存储所有form_validation规则......但是我想将回调函数存储在一个文件中,我该怎么办呢?有任何想法吗?谢谢....

现在我的文件是这样的:

User_controller 在用户控制器下有很多自定义的callback_valid,但我准备移动config.php中的所有规则。我想把_valid回调放到一个类。谢谢 。

2 个答案:

答案 0 :(得分:1)

默认情况下,Form_validation lib使用它的$CI属性来查看回调方法是否存在。通常这会查看当前的控制器。但是,您可以通过扩展验证类并更改run()方法来更改此行为。

class MY_Form_validation extends CI_Form_validation {

    /**
     * Support for validation callbacks from any object
     * 
     * @access      public
     * @param       object      The object to run callbacks from
     * @param       string      Is there a validation rule for the particular URI being accessed?
     * @return      bool        Validation status
     */
    function run($obj = '', $group = '')
    { 
        // Assign the callback object
        if (is_object($obj)) $this->CI =& $obj;

        // Run the validation as normal
        return parent::run($group);
    }

}

我们只是重新分配$CI属性。因此,要使用来自名为user_validation的类的回调,您可以这样做:

$callback_class = $this->user_validation;
if ($this->form_validation->run($callback_class)) {}

任何加载的类都可以工作,因此您可以在模型或库中存储回调规则,只需将要处理回调的对象传递给run()方法。

答案 1 :(得分:0)

在这种情况下我要做的只是创建一个MY_Form_validation类来扩展CodeIgniter的表单验证。将“_valid”检查放在新创建的MY_Form_Validation文件中,并按照与默认form_validation规则相同的方式设置“_valid”检查的规则。

像...一样的东西。

class MY_Form_validation extends CI_Form_validation {

    function valid_user($str)
    {

    } 

    function valid_password($str)
    {

    }  
}