Думаю, все кто работает с CodeIgniter в курсе – на этой недели вышла его очередная версия (1.7).
Изменения довольно интересные и существенные (на русском здесь). Самое главное — добавлена новая библиотека для проверки форм (Form Validation).
Предыдущая версия поддерживается, но использовать её не рекомендуется. Насколько я понял, разработчики не гарантируют, что она останется в будущих версиях фреймворка.
То же самое касается и моего генератора форм. Работать со старой версией можно, но код будет совместим только с версиями 1.6 и более ранними.
Т.к. отставать от развития не правильно, я написал новую версию генератора.
Старый вариант полностью поддерживается, но использовать его имеет смысл, только если вы не собираетесь переходить на новую версию фреймворка.
Внешний вид генератора не изменился. С помощью кнопки «Добавить» создаете нужное количество полей. Выбираете их тип и указываете имена, атрибуты и правила проверки.
Нажимаете кнопку «Генерировать код». После этого на вкладках «Контроллер», «Представление» и «CSS» появится созданный код.
Подробнее об этом вы сможете почитать в предыдущей статье.
Теперь кратко расскажу об основных изменениях в новой библиотеке.
Поддержка старой версии
Тут все просто. Файл новой библиотеки называется form_validation
, а старой – validation
. Т.е.
$this->load->library('validation');
загрузит старую версию, а
$this->load->library('form_validation');
новую.
На практике это означает, что если вы обновите CodeIgniter, то проверка форм будет работать также как и раньше, т.к. автоматически будет использоваться старый класс.
Добавление правил проверки и названий полей.
В старой версии для этого нужно было вызвать методы set_rules
и set_fields
$fields['textfield'] = 'textfield'; $rules['textfield'] = 'required'; $this->validation->set_rules($rules); $this->validation->set_fields($fields);
Новый вариант проще.
$this->form_validation->set_rules('textfield', 'lang:textfield', 'required');
Метод set_rules
позволяет задавать одновременно имя (второй параметр) и правила проверки (третий параметр). Первый параметр должен совпадать с атрибутом name
поля.
Обратите внимание на приставку lang:
во втором параметре. Если вы напишите файл с переводами имен полей, то библиотека автоматически будет его использовать.
Кроме того, появилась возможность задавать правила проверки в конфигурационном файле. Для этого нужно просто создать в этом файле массив с параметрами полей.
Восстановление данных в форме (re-populating).
Эта функция используется для автоматического заполнения формы после перезагрузки страницы (обычно это делается, если часть полей была заполнена неправильно).
В старой версии это делалось так:
<input type="text" name="textfield" id="textfield" value="<?php if (isset($this->validation->textfield)) {echo $this->validation->textfield;} ?>" />
Теперь можно использовать более элегантное решение:
<input type="text" name="textfield" id="textfield" value="<?php echo set_value('textfield'); ?>" />
Как видите, не нужно делать проверку существования переменной.
Тоже самое касается вывода сообщений об ошибках.
Старый вариант:
<?php if (isset($this->validation->textfield_error)) { echo $this->validation->textfield_error; } ?>
Новый:
<?php echo form_error('textfield'); ?>
Как видите, изменения интересные и в основном направлены на сокращение вашего кода. Подробное описание библиотеки находится здесь.
До встречи!
P.S. Если вы заметили ошибки в работе генератора или у вас есть другие замечания, пожалуйста, напишите мне об этом. Буду исправлять 🙂 .
UPD. По просьбе Sam'а даю ссылки на архивы с исходниками:
Генератор форм для CodeIgniter 1.7
Генератор форм для CodeIgniter 1.6 и предыдущих
Код, выполняющий основную работу находится в файле lib/mainscripts.js