我怎么能分离回调逻辑在一个单一的文件使用编码器


How can I separate the callback logic in the one single file using codeigniter?

我使用config.php来存储所有的form_validation规则…但我想存储回调函数在一个单一的文件,我怎么能这样做?什么好主意吗?谢谢你…

现在我的文件是这样的:

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

默认情况下,Form_validation库使用它的$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()方法。

在这种情况下,我要做的只是创建一个MY_Form_validation类来扩展CodeIgniter的表单验证。将"_valid"检查放在新创建的MY_Form_Validation文件中,并为"_valid"检查设置规则,就像您为默认的form_validation规则所做的一样。

之类的…

class MY_Form_validation extends CI_Form_validation {
    function valid_user($str)
    {
    } 
    function valid_password($str)
    {
    }  
} 

相关文章: