Как динамически установить правила проверки формы для CodeIgniter? - PullRequest
0 голосов
/ 27 февраля 2009

С новой версией CodeIgniter; Вы можете устанавливать правила только в статическом файле form_validation.php. Мне нужно проанализировать опубликованную информацию (то есть, только если они установят флажок). Только тогда я хочу, чтобы определенные поля были проверены. Каков наилучший способ сделать это, или я должен использовать старый класс проверки формы, который устарел сейчас?

Ответы [ 3 ]

5 голосов
/ 28 февраля 2009

Вы не можете устанавливать правила только в файле config / form_validation.php. Вы также можете установить их с помощью:

   $this->form_validation->set_rules();

Подробнее о: http://codeigniter.com/user_guide/libraries/form_validation.html#validationrules

Однако порядок предпочтений, который имеет CI, состоит в том, чтобы сначала проверить, есть ли правила, установленные с помощью set_rules (), если нет, посмотрите, есть ли правила, определенные в файле конфигурации.

Итак, если вы добавили правила в файл конфигурации, но в действии вызываете функцию set_rules (), правила конфигурации никогда не будут достигнуты.

Зная, что для условных проверок у меня будет определенный метод в модели, который инициализирует объект form_validation в зависимости от ввода (для этого конкретного действия). Типичная ситуация, когда мне нужно было это сделать, заключается в проверке адресов доставки и выставления счетов (одинаковые или разные).

Надеюсь, это поможет. :)

3 голосов
/ 27 февраля 2009

Вы можете написать свою собственную функцию, которая проверяет, установлен ли указанный флажок, и применяет проверку вручную.

function checkbox_selected($content) {
    if (isset($_REQUEST['checkbox'])) {
        return valid_email($content);
    }
}

$this->form_validation->set_rules('email', 'Email', 'callback_checkbox_selected');
0 голосов
/ 18 июля 2011

Если вы хотите избежать написания своей собственной функции проверки, я натолкнулся на этот сайт , который предполагает, что если вы динамически устанавливаете свои правила с помощью класса Проверка формы , вы может просто создать аргумент строки правила для set_rules () динамически.

Сначала вы проверяете данные POST, чтобы определить, удовлетворяется ли ваше условие (например, установлен флажок), а затем, при необходимости, добавляете «| required» в строку правила, которую вы передаете set_rules ().

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