Powered by CodeIgniter

Элементы форм

Определяются методом, соответствующим их названию. Метод может принимать четыре аргумента, два последние из которых необязательные.$this->form->input($name = 'name',$config = array(), [$position = (int)10,$replace = (bool)TRUE])
  • $name Имя элемента — определяет параметры name и id. В последствии при помощи функции $this->form->find('name') можно найти элемент по имени.
  • $config Конфигурация — массив параметров./* * Все базовые параметры являются необязательными. */ $config = array( // Проверка на стороне сервера 'validation'=>'required|min_length[3]', // Проверка на стороне клиента 'js_validation'=>'required|length[3,-1]', // Прямое указание метки 'label'=>t('name'), // Прямое указание описания 'description'=>t('name_description'), // Класс элемента 'class'=>'myClass', // Смещение метки после элемента -- полезно для radio, checkbox 'label_after'=>TRUE, // Скрыть метку 'label_hidden'=>TRUE, // Указываем значение элемента // Лучше указывать массив/объект значений методу $this->form->set_values($data) 'value'=>$value, // Задать элементу собственный шаблон // Позволяет не вносить изменения в стандартный шаблон формы 'template'=>GEARS."captcha/templates/captcha.tpl", // Прямое указание типа элемент // Указывается автоматически по названию вызванного метода 'type'=>'input', ... // У некоторых элементов типа file или image есть свои, особенные параметры. );
  • $position Прямое указание позиции элемента. Полезно использовать при расширении формы через хуки.
  • $replace Команда на замещение элемента на указанной $position позиции элемента.

text, password, textarea, hidden

Стандартные элементы, отличающиеся способом отображения. Вместо text можно использовать слово input.
$this->form->text('name'); //Аналогично $this->form->input('name');

select, image_select

Элемент выбора через выпадающее меню или через иконки.

Элемент выбора через иконки

$config = array( ... /* * Варианты выбора для элементов типа select, image_select */ 'options'=>array( '0'=>'Вариант один', // Если тип image_select '1'=>'/gears/select/img/some_folder/some_icon.png' // Если нужно установить title к изображению выбора '2'=>array('Some Title','/gears/select/img/some_folder/some_icon.png') ), // Если можно выбрать несколько вариантов за раз 'multiple'=>TRUE, // Значение должно указывать на ключ массива значений 'value'=>0, // Если значения множественные, возможны два варианта 'value'=>array(0,1,2,3,4), // Такой вариант можно хранить в виде строки 'value'=>'0,1,2,3,4', ... );Если элемент может иметь множество значений, то при обработке полученных значений результат будет иметь вид «0,1,2,3,4», то есть значения склеиваются через ",", чтобы обеспечить возможность сохранения данных в виде строки.

checkbox,radio

Стандартные элементы выбора. Не имеют особых параметров. По-умолчанию label размещается перед элементом. Это можно изменить при помощи добавления дополнительного параметра конфигурации «label_after»=>TRUE.

fieldset,div

Иногда необходимо обернуть некоторые элементы в fieldset или div....->fieldset('name','legend') ->input('name') ... // Можно явно закрыть fieldset, вызвав метод без параметров. ->filedset()->compile(); /* * Если fieldset или div не будет закрыт -- модель закроет его автоматически. */ ->div('id') ->input('name') ... // Вместо того, чтобы закрыть, определяем следующий div. // Предыдущий закроется автоматически. ->div('info') ->input('address') ... ->compile(); // Указанное выше верно и для fieldset.

file, file_url, image, image_url

Быстрая и удобная загрузка файлов. В качестве дополнительных параметров элемента следует указывать параметры класса File Uploading Class из CodeIgniter.
Обязательным является параметр upload_path, указывающий на путь загрузки файла.
В случае с image и image_url параметр allowed_types указывается автоматически.
Для проверки данных добавлена новая функция в js_validation и validationfile[формат_файла].
... ->file('info',array( // Не указывайте required 'validation'=>'file[doc]', 'js_validation'=>'file[doc]', // Функция _mkdir создает директорию, если она не существует 'upload_path'=>_mkdir('./uploads/files/info/') )); При загрузке изображений можно использовать пост-обработку, а также использовать параметры класса Image Manipulation Class из CodeIgniter.... ->image('post_image',array( // Указывать allowed_types не надо 'max_size'=>500, // в килобайтах 'upload_path'=>_mkdir('./uploads/images/'.$this->user->get('id').'/'.date('Y/m/d/')), 'overwrite'=>TRUE, // перезаписать, если такой файл уже есть /* * Далее идут параметры для пост-обработки */ 'resize'=>'400x300', 'resize_aspect'=>TRUE, // сохранить пропорции 'watermark'=>TRUE, // водный знак, // миниатюры будут созданы в подпапках 100x100 и 200x200 директории оригинала 'thumbs'=>array('100x100','200x200'), // поскольку миниатюры небольшие, водный знак не стоит использовать 'thumbs_watermark'=>FALSE, 'thumbs_aspect'=>'auto', 'thumbs_ratio'=>TRUE, 'thumbs_crop'=>TRUE, // Подрезать по точного размера )) ... При создании миниатюр можно хранить лишь адрес оригинала, воссоздавая пути к ним автоматически.$data['image'] = '/uploads/images/image.png'; $data['image'] = make_icons($data['image'],array('100x100','200x200')); // Результат будет следующим $data['image'] = array( 'original'=>'/uploads/images/image.png', '100x100'=>'/uploads/images/100x100/image.png', '200x200'=>'/uploads/images/200x200/image.png' );

title, description

/* * @param string Заголовок * @param mixed Конфигурация * @param boolean Использовать в title страницы * @param boolean Заменять последний элемент в title страницы */ $this->form->title('Регистрация',FALSE,TRUE,TRUE); /* * Описание формы */ $this->form->description('В данной форме вам предстоит пройти регистрацию на сайте.',array('class'=>'info'));

datetime

Используется когда нужно указать дату и время. Принимает значение в виде «Y-m-d H:i:s»./* * Параметры для элемента datetime */ ... // с 1970 по 2010 'range'=>2010, // с 2008 по 2010 'range'=>'2008-2010', // с 2007 по 2010, 'range'=>'2007,2008,2009,2010', // с 2006 по 2007 'range'=>array('2006','2007'), 'value'=>'2009-05-30 10:10',

br,div_clear

Дополнительные элементы. Суть их ясна из названия.

grid

Для создания сеток (типовых таблиц), можно использовать этот метод. // Укажем типы столбцов $header = array( // имя элемента => (текст заголовка, тип элемента, ширина столбца,[адрес картинки, выравнивание]) 'position'=>array(FALSE,'dragndrop','5%'), // drag and drop 'id' => array(t('ID'),'text','10%'), 'name' => array(t('name'),'link','20%',FALSE,'left'), 'edit' => array(t('edit'),'icon','10%','/gears/global/img/icon/edit.png'), // Массив информации должен содержать путь к картинке в ячейке image 'image' => array(t('image'),'image','10%', 'delete' => array(t('delete'),'checkbox'), ); // Указываем параметры сетки $info = array( // Куда указывает ссылка/иконка // Очередность в $header обуславливает очередность в данном массиве 'link'=>array('/path/to/link','/path/to/icon'), // Какой параметр подставляется после пути ссылки 'link_add'=>array('id','url_name'), // По какому параметру происходит удаление элементов 'primary'=>'id', // Прячем заголовок сетки 'noname'=>TRUE, // Активируем drag-n-drop по полю // Используется для простой смены порядка очередности 'dragndrop'=>'position', // Динамическая отправка запроса при клике на checkbox'ы 'ajax'=>FALSE, // Динамическое удаление элементов при клике на checkbox'ы 'ajax_delete'=>FALSE ); // Собираем информацию для сетки // Обязательно в виде массива $data = $this->db->get('elements',20)->result_array(); foreach($data as &$item){ // Достраиваем полный путь для картинки, если его нет // Название элемента массива информации должно совпадать с элементом в заголовке $item['image'] = '/gears/some_gear/img/'.$item['image']; } // Задаем сетку. /* * Внимание! Если вы хотите, чтобы базовые функции удаления или перетаскивания работали * имя элемента сетки должно совпадать с названием таблицы базы данных. */ $this->form->grid('elements',$header,$data,$info); // Выводим форму в шаблон $this->form->compile();
Для полного понимания всех процессов анализируйте код компонентов.