Как я могу отделить логику обратного вызова в одном файле, используя codeigniter? - PullRequest
0 голосов
/ 03 сентября 2011

Я использую config.php для хранения всех правил form_validation ... Но я хотел бы также сохранить функцию обратного вызова в одном файле, как я могу это сделать?Есть идеи?Спасибо ....

Теперь мой файл выглядит примерно так:

User_controller под контроллером пользователя имеет много настраиваемых callback_valid, но я готов переместить все правила в config.php.Я хотел бы поместить обратный вызов _valid в один класс.Спасибо .

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

По умолчанию библиотека 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().

0 голосов
/ 03 сентября 2011

В этом случае я бы просто создал класс 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)
    {

    }  
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...