Вызов пользовательского помощника или библиотечной функции в set_rules () - PullRequest
2 голосов
/ 25 июля 2011

Я пытаюсь вызвать метод пользовательской библиотеки в строке 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"; }
}
...

Функция (test_my_method) недоступна при вызове в строке set_rules ().Есть идеи, что может быть не так?Спасибо.

1 Ответ

0 голосов
/ 25 июля 2011

Я не видел никакой причины, по которой вы не использовали функцию обратного вызова вместо расширения класса проверки формы для своей задачи.Подробнее см. Обратные вызовы: Ваши собственные функции проверки .Вы сделали, расширяет класс, если вам нужно как-то изменить его исходное поведение, а не для такого рода задач.Кроме того, кроме того, если вы уже установили какой-либо пользовательский обратный вызов, вам не нужно включать другое правило (например, обрезку, обязательный и т. Д.), Поскольку вы можете проверить все аспекты этого поля в своей пользовательской функции обратного вызова.

...