Вы не можете устанавливать правила только в файле 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 в зависимости от ввода (для этого конкретного действия). Типичная ситуация, когда мне нужно было это сделать, заключается в проверке адресов доставки и выставления счетов (одинаковые или разные).
Надеюсь, это поможет. :)