Генератор форм для новой версии CodeIgniter

Владимир | | CodeIgniter, PHP, Web разработка.

Думаю, все кто работает с 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