Необходим другой подход с правилом проверки для отдельных действий в одном контроллере - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть контроллер для обработки некоторой информации, которую можно сохранить или обновить в БД.

Я использую public $ validation для хранения массива с правилами проверки, которые будут выглядеть следующим образом:

public $validation = array(
    array(
        'field' => 'modelname[column1]',
        'label' => 'Column 1',
        'rules' => 'required'
    ),
    array(
        'field' => 'modelname[column1]',
        'label' => 'Column 2',
        'rules' => 'required'
    ),

);

и я использую свою собственную функцию проверки с обратными вызовами в той же самой проверке $. Как это:

array(
        'field' => 'modelname[column3]',
        'label' => 'Column 3',
        'rules' => 'callback_column3|required'
    ),
    array(
        'field' => 'modelname[column4]',
        'label' => 'Column4',
        'rules' => 'callback_column4|required'
    ),

Который обрабатывается с помощью действия в контроллере. Проблема в том, что:

Для добавления (сохранения) я должен проверить уникальность значения, это функция callback_column4 (скажем), и если она не уникальна, она возвращает false. Но я не могу вернуть false для редактирования (обновления), потому что я читаю и редактирую что-то, что, очевидно, находится в БД.

Итак, что я должен сделать, чтобы различать два разных действия при проверке.

PS: я уже пытался использовать подмассивы с именем Class / action (http://codeigniter.com/user_guide/libraries/form_validation.html#savingtoconfig), но я использую абстракцию Core_Model, которая играет роль вызова

$this->form_validation->set_rules($this->validation); $this->form_validation->run()

1 Ответ

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

Вы можете добавить правила проверки для этого ввода в методе контроллера, который его вызывает, вместо того, чтобы пытаться поместить все в один и тот же массив. Таким образом, вы можете сохранить общедоступную валидацию var для всех остальных правил, но просто установить то, которое вызывает проблемы для вас независимо.

Вы также можете создать два отдельных массива для ваших правил валидации и вызвать каждый из них для соответствующего метода. т.е.

$this->form_validation->set_rules($this->create_validation);

и

$this->form_validation->set_rules($this->edit_validation);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...