2

我正在尝试在 set_rules(...) 行中调用自定义库的方法。

我听说可以创建一个类(在应用程序/库中)扩展本机 Form_validation 类并在那里编写自定义方法。

所以我有 /application/libraries/MY_Form_validation.php 和下面的代码;

class MY_Form_validation extends CI_Form_validation {

    public function __construct()
    {
        parent::__construct();
    }

    function test_my_method($str)
    {

   //echo "test"; exit;
            if ( ! is_array($str))
        {
            return (trim($str) == '') ? FALSE : TRUE;
        }
        else
        {
            return ( ! empty($str));
        }
    } 

}

在我拥有的控制器功能中;

...
public function login() {                
        $this->load->library('form_validation');

        //echo ($this->form_validation->test_my_method(''))? "true":"false";      

        $this->form_validation->set_rules('username', 'Username', 'trim|test_my_method');
        $this->form_validation->set_rules('password', 'Password', 'required');

        if($this->form_validation->run())
        { echo "Success"; }
}
...

在 set_rules() 行中调用该函数 ( test_my_method ) 时无法访问。知道有什么问题吗?谢谢。

4

1 回答 1

0

我没有看到您为什么不使用回调函数而是为您的任务扩展表单验证类的任何原因。有关详细信息,请参阅回调:您自己的验证函数。如果您需要以某种方式从其本机行为进行更改,则可以扩展该类,而不是为了这种任务。此外,如果您已经设置了一些自定义回调,则不需要包含其他规则(如修剪、必需等),因为您可以在自定义回调函数中检查该字段的所有方面。

于 2011-07-25T14:58:13.173 回答