CHtml
| Пакет | system.web.helpers |
|---|---|
| Наследование | class CHtml |
| С момента | 1.0 |
| Исходный код | framework/web/helpers/CHtml.php |
Почти все методы этого класса позволяют задавать дополнительные атрибуты HTML для генерируемых HTML-тегов. Например, вы можете указать 'class', 'style' или 'id' для HTML-элемента. Например, при использовании
array('class' => 'my-class', 'target' => '_blank') в качестве htmlOptions, это приведет к тому, что атрибуты HTML будут отображаться так: class="my-class" target="_blank".Общественные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| afterRequiredLabel | строка | HTML-код, который будет добавлен после метки "обязательно". | CHtml |
| beforeRequiredLabel | строка | HTML-код, который будет добавлен перед меткой "обязательно". | CHtml |
| closeSingleTags | логическое значение | закрывать ли одиночные теги. | CHtml |
| count | целое число | счётчик для генерации автоматических имён полей ввода. | CHtml |
| errorContainerTag | строка | имя тега для контейнера ошибок. | CHtml |
| errorCss | строка | CSS-класс для выделения полей ввода с ошибками. | CHtml |
| errorMessageCss | строка | CSS-класс для отображения сообщений об ошибках (см. error). | CHtml |
| errorSummaryCss | строка | CSS-класс для отображения сводок ошибок (см. errorSummary). | CHtml |
| liveEvents | Устанавливает стиль по умолчанию для прикрепления обработчиков событий jQuery. | CHtml | |
| renderSpecialAttributesValue | логическое значение | отображать ли значения специальных атрибутов. | CHtml |
| requiredCss | строка | CSS-класс для меток "обязательно". | CHtml |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| activeCheckBox() | Генерирует флажок для атрибута модели. | CHtml |
| activeCheckBoxList() | Генерирует список флажков для атрибута модели. | CHtml |
| activeColorField() | Генерирует поле выбора цвета для атрибута модели. | CHtml |
| activeDateField() | Генерирует поле ввода даты для атрибута модели. | CHtml |
| activeDateTimeField() | Генерирует поле ввода даты и времени для атрибута модели. | CHtml |
| activeDateTimeLocalField() | Генерирует поле ввода локальной даты и времени для атрибута модели. | CHtml |
| activeDropDownList() | Генерирует выпадающий список для атрибута модели. | CHtml |
| activeEmailField() | Генерирует поле ввода адреса электронной почты для атрибута модели. | CHtml |
| activeFileField() | Генерирует поле ввода файла для атрибута модели. | CHtml |
| activeHiddenField() | Генерирует скрытое поле ввода для атрибута модели. | CHtml |
| activeId() | Генерирует идентификатор поля ввода для атрибута модели. | CHtml |
| activeLabel() | Генерирует тег метки для атрибута модели. | CHtml |
| activeLabelEx() | Генерирует тег метки для атрибута модели. | CHtml |
| activeListBox() | Генерирует список для атрибута модели. | CHtml |
| activeName() | Генерирует имя поля ввода для атрибута модели. | CHtml |
| activeNumberField() | Генерирует поле ввода числа для атрибута модели. | CHtml |
| activePasswordField() | Генерирует поле ввода пароля для атрибута модели. | CHtml |
| activeRadioButton() | Генерирует радиокнопку для атрибута модели. | CHtml |
| activeRadioButtonList() | Генерирует список радиокнопок для атрибута модели. | CHtml |
| activeRangeField() | Генерирует поле ввода диапазона для атрибута модели. | CHtml |
| activeSearchField() | Генерирует поле ввода поиска для атрибута модели. | CHtml |
| activeTelField() | Генерирует поле ввода номера телефона для атрибута модели. | CHtml |
| activeTextArea() | Генерирует область ввода текста для атрибута модели. | CHtml |
| activeTextField() | Генерирует поле ввода текста для атрибута модели. | CHtml |
| activeTimeField() | Генерирует поле ввода времени для атрибута модели. | CHtml |
| activeUrlField() | Генерирует поле ввода URL для атрибута модели. | CHtml |
| activeWeekField() | Генерирует поле ввода недели для атрибута модели. | CHtml |
| ajax() | Генерирует JavaScript, инициирующий AJAX-запрос. | CHtml |
| ajaxButton() | Генерирует кнопку, которая может инициировать AJAX-запросы. | CHtml |
| ajaxLink() | Генерирует ссылку, которая может инициировать AJAX-запросы. | CHtml |
| ajaxSubmitButton() | Генерирует кнопку, которая может отправить текущую форму методом POST. | CHtml |
| asset() | Генерирует URL для опубликованных ресурсов. | CHtml |
| beginForm() | Генерирует открывающий тег формы. | CHtml |
| button() | Генерирует кнопку. | CHtml |
| cdata() | Оборачивает заданную строку в тег CDATA. | CHtml |
| checkBox() | Генерирует флажок. | CHtml |
| checkBoxList() | Генерирует список флажков. | CHtml |
| closeTag() | Генерирует закрывающий тег HTML элемента. | CHtml |
| colorField() | Генерирует поле выбора цвета. | CHtml |
| css() | Оборачивает заданный CSS контент в тег CSS. | CHtml |
| cssFile() | Создаёт ссылку на указанный CSS файл. | CHtml |
| dateField() | Генерирует поле ввода даты. | CHtml |
| dateTimeField() | Генерирует поле ввода даты и времени. | CHtml |
| dateTimeLocalField() | Генерирует поле ввода локальной даты и времени. | CHtml |
| decode() | Декодирует специальные HTML сущности обратно в соответствующие символы. | CHtml |
| dropDownList() | Генерирует выпадающий список. | CHtml |
| emailField() | Генерирует поле ввода адреса электронной почты. | CHtml |
| encode() | Кодирует специальные символы в HTML сущности. | CHtml |
| encodeArray() | Кодирует специальные символы в массиве строк в HTML сущности. | CHtml |
| endForm() | Генерирует закрывающий тег формы. | CHtml |
| error() | Отображает первую ошибку валидации для атрибута модели. | CHtml |
| errorSummary() | Отображает сводку ошибок валидации для одной или нескольких моделей. | CHtml |
| fileField() | Генерирует поле ввода файла. | CHtml |
| form() | Генерирует открывающий тег формы. | CHtml |
| getIdByName() | Генерирует допустимый HTML идентификатор на основе имени. | CHtml |
| htmlButton() | Генерирует кнопку с использованием тега HTML button. | CHtml |
| image() | Генерирует тег изображения. | CHtml |
| imageButton() | Генерирует кнопку отправки изображения. | CHtml |
| label() | Генерирует тег метки. | CHtml |
| link() | Генерирует тег гиперссылки. | CHtml |
| linkButton() | Генерирует кнопку отправки по ссылке. | CHtml |
| linkTag() | Генерирует тег ссылки, который можно вставить в секцию head страницы HTML. | CHtml |
| listBox() | Генерирует список. | CHtml |
| listData() | Генерирует данные, подходящие для HTML элементов на основе списков. | CHtml |
| listOptions() | Генерирует параметры списка. | CHtml |
| mailto() | Генерирует ссылку mailto. | CHtml |
| metaTag() | Генерирует тег meta, который можно вставить в секцию head HTML страницы. | CHtml |
| modelName() | Генерирует имя HTML для данной модели. | CHtml |
| normalizeUrl() | Нормализует входной параметр, чтобы он стал корректным URL. | CHtml |
| numberField() | Генерирует поле ввода числа. | CHtml |
| openTag() | Генерирует открывающий тег HTML элемента. | CHtml |
| pageStateField() | Генерирует скрытое поле для хранения состояния страницы. | CHtml |
| passwordField() | Генерирует поле ввода пароля. | CHtml |
| radioButton() | Генерирует радиокнопку. | CHtml |
| radioButtonList() | Генерирует список радиокнопок. | CHtml |
| rangeField() | Генерирует поле ввода диапазона. | CHtml |
| refresh() | Регистрирует мета-тег 'refresh'. | CHtml |
| renderAttributes() | Отображает атрибуты HTML-тега. | CHtml |
| resetButton() | Генерирует кнопку сброса. | CHtml |
| resolveName() | Генерирует имя ввода для атрибута модели. | CHtml |
| resolveNameID() | Генерирует имя и ID ввода для атрибута модели. | CHtml |
| resolveValue() | Оценивает значение атрибута модели. | CHtml |
| script() | Оборачивает предоставленный JavaScript тегом script. | CHtml |
| scriptFile() | Включает JavaScript-файл. | CHtml |
| searchField() | Генерирует поле поиска. | CHtml |
| setModelNameConverter() | Устанавливает генератор, используемый в методе CHtml::modelName(). Вы можете использовать значение `null`, чтобы восстановить значение по умолчанию | CHtml |
| statefulForm() | Генерирует тег формы с сохранением состояния. | CHtml |
| submitButton() | Генерирует кнопку отправки. | CHtml |
| tag() | Генерирует HTML-элемент. | CHtml |
| telField() | Генерирует поле ввода телефона. | CHtml |
| textArea() | Генерирует поле ввода текстовой области. | CHtml |
| textField() | Генерирует поле ввода текста. | CHtml |
| timeField() | Генерирует поле ввода времени. | CHtml |
| urlField() | Генерирует поле ввода URL. | CHtml |
| value() | Оценивает значение указанного атрибута для данной модели. | CHtml |
| weekField() | Генерирует поле ввода недели. | CHtml |
Защищённые методы
| Метод | Описание | Определено |
|---|---|---|
| activeInputField() | Генерирует HTML-тег ввода для атрибута модели. | CHtml |
| addErrorCss() | Добавляет errorCss к атрибуту 'class'. | CHtml |
| clientChange() | Генерирует JavaScript со специфическими изменениями клиента. | CHtml |
| inputField() | Генерирует HTML-тег ввода. | CHtml |
Подробное описание свойств
afterRequiredLabel свойство
public static string $afterRequiredLabel;
код HTML, который будет добавлен после метки обязательности.
См. также
beforeRequiredLabel свойство
public static string $beforeRequiredLabel;
код HTML, который будет добавлен перед меткой обязательности.
См. также
closeSingleTags свойство (доступно начиная с v1.1.13)
public static boolean $closeSingleTags;
закрывать ли одиночные теги. По умолчанию true. Может быть установлено в false для HTML5.
count свойство
public static integer $count;
счётчик для генерации автоматических имён полей ввода.
errorContainerTag свойство (доступно начиная с v1.1.13)
public static string $errorContainerTag;
имя тега контейнера ошибок. По умолчанию 'div'.
errorCss свойство
public static string $errorCss;
класс CSS для выделения полей с ошибками. Поля ввода будут дополнены этим классом CSS, если у них есть ошибки ввода.
errorMessageCss свойство
public static string $errorMessageCss;
класс CSS для отображения сообщений об ошибках (см. error).
errorSummaryCss свойство
public static string $errorSummaryCss;
класс CSS для отображения сводок ошибок (см. errorSummary).
liveEvents свойство (доступно начиная с v1.1.9)
public static $liveEvents;
Устанавливает стиль по умолчанию для привязки обработчиков событий jQuery.
Если установлено в true (по умолчанию), обработчики событий делегируются. Обработчики событий прикрепляются к телу документа и могут обрабатывать события от дочерних элементов, которые добавляются в документ позже.
Если установлено в false, обработчики событий привязываются непосредственно. Обработчики событий прикрепляются непосредственно к элементу DOM, который должен уже существовать на странице. Элементы, внедрённые на страницу позже, не будут обработаны.
Вы можете переопределить это значение для конкретного элемента, установив атрибут htmlOptions delegate (см. clientChange).
Для получения дополнительной информации о прикреплении обработчиков событий jQuery, см. http://api.jquery.com/on/
См. также
renderSpecialAttributesValue свойство (доступно начиная с v1.1.13)
public static boolean $renderSpecialAttributesValue;
отображать ли значения специальных атрибутов. По умолчанию true. Может быть установлено в false для HTML5.
requiredCss свойство
public static string $requiredCss;
класс CSS для меток обязательности. По умолчанию 'required'.
См. также
Подробное описание методов
activeCheckBox() метод
public static string activeCheckBox(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | данные модели |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и tag для получения дополнительной информации). Доступен специальный параметр с именем 'uncheckValue', который можно использовать для указания значения, возвращаемого при отсутствии выбора в чекбоксе. По умолчанию это значение '0'. Внутренне рендерится скрытое поле, чтобы при отсутствии выбора в чекбоксе можно было получить отправленное значение uncheck. Если 'uncheckValue' установлен как NULL, скрытое поле не будет рендериться. |
| {return} | строка | сгенерированный чекбокс |
public static function activeCheckBox($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
if(!isset($htmlOptions['value']))
$htmlOptions['value']=1;
if(!isset($htmlOptions['checked']) && self::resolveValue($model,$attribute)==$htmlOptions['value'])
$htmlOptions['checked']='checked';
self::clientChange('click',$htmlOptions);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='0';
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=$uncheck!==null ? self::hiddenField($htmlOptions['name'],$uncheck,$hiddenOptions) : '';
return $hidden . self::activeInputField('checkbox',$model,$attribute,$htmlOptions);
}
Генерирует чекбокс для атрибута модели. Предполагается, что атрибут принимает значения true или false. Если у атрибута есть ошибка ввода, класс CSS поля ввода будет дополнен errorCss.
См. также
activeCheckBoxList() метод
public static string activeCheckBoxList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $data | массив | пары «значение-метка», используемые для генерации списка флажков. Обратите внимание, что значения будут автоматически закодированы в HTML, в то время как метки — нет. |
| $htmlOptions | массив | дополнительные параметры HTML. Параметры будут применяться к каждому полю флажка. Признаются следующие специальные параметры:
|
| {return} | строка | сгенерированный список флажков |
public static function activeCheckBoxList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$name=$htmlOptions['name'];
unset($htmlOptions['name']);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='';
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=$uncheck!==null ? self::hiddenField($name,$uncheck,$hiddenOptions) : '';
return $hidden . self::checkBoxList($name,$selection,$data,$htmlOptions);
}
Генерирует список флажков для атрибута модели. Значение атрибута модели используется в качестве выбора. Если для атрибута есть ошибка ввода, к CSS-классу поля ввода добавляется errorCss. Обратите внимание, что список флажков позволяет выполнять множественный выбор, как и listBox. В результате соответствующее значение POST является массивом. Если выбор не сделан, соответствующее значение POST — пустая строка.
См. также
activeColorField() метод (доступен начиная с v1.1.16)
public static string activeColorField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activeColorField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('color',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода выбора цвета для атрибута модели. Если для атрибута есть ошибка ввода, к CSS-классу поля ввода добавляется errorCss.
См. также
activeDateField() метод (доступен начиная с v1.1.11)
public static string activeDateField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activeDateField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('date',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода даты для атрибута модели. Если для атрибута есть ошибка ввода, к CSS-классу поля ввода добавляется errorCss.
См. также
activeDateTimeField() метод (доступен начиная с v1.1.16)
public static string activeDateTimeField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activeDateTimeField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('datetime',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода даты и времени для атрибута модели. Если для атрибута есть ошибка ввода, к CSS-классу поля ввода добавляется errorCss.
См. также
activeDateTimeLocalField() метод (доступен начиная с v1.1.16)
public static string activeDateTimeLocalField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activeDateTimeLocalField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('datetime-local',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода datetime-local для атрибута модели. Если для атрибута есть ошибка ввода, к CSS-классу поля ввода добавляется errorCss.
См. также
activeDropDownList() метод
public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $data | массив | данные для генерации элементов списка (значение=>отображение) Вы можете использовать listData для генерации этих данных. Обратитесь к listOptions для получения информации о том, как эти данные используются для генерации элементов списка. Обратите внимание, что значения и метки будут автоматически закодированы в HTML этим методом. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов. Подробнее см. clientChange и tag. Кроме того, поддерживаются следующие параметры:
|
| {return} | строка | сгенерированный выпадающий список |
public static function activeDropDownList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
$options="\n".self::listOptions($selection,$data,$htmlOptions);
self::clientChange('change',$htmlOptions);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$hidden='';
if(!empty($htmlOptions['multiple']))
{
if(substr($htmlOptions['name'],-2)!=='[]')
$htmlOptions['name'].='[]';
if(isset($htmlOptions['unselectValue']))
{
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=self::hiddenField(substr($htmlOptions['name'],0,-2),$htmlOptions['unselectValue'],$hiddenOptions);
unset($htmlOptions['unselectValue']);
}
}
return $hidden . self::tag('select',$htmlOptions,$options);
}
Генерирует выпадающий список для атрибута модели. Если атрибут содержит ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeEmailField() метод (доступен с версии 1.1.11)
public static string activeEmailField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации). |
| {return} | строка | сгенерированное поле ввода |
public static function activeEmailField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('email',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода электронной почты для атрибута модели. Если атрибут содержит ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeFileField() метод
public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeFileField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
// add a hidden field so that if a model only has a file field, we can
// still use isset($_POST[$modelClass]) to detect if the input is submitted
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
return self::hiddenField($htmlOptions['name'],'',$hiddenOptions)
. self::activeInputField('file',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода файла для атрибута модели. Обратите внимание, что вам необходимо установить атрибут 'enctype' окружающего поля формы на 'multipart/form-data'. После отправки формы информацию об загруженном файле можно получить через $_FILES (см. документацию PHP).
См. также
activeHiddenField() метод
public static string activeHiddenField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. |
| {return} | строка | сгенерированное поле ввода |
public static function activeHiddenField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
return self::activeInputField('hidden',$model,$attribute,$htmlOptions);
}
Генерирует скрытое поле ввода для атрибута модели.
См. также
activeId() метод
public static string activeId(CModel $model, string $attribute) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| {return} | строка | идентификатор сгенерированного поля ввода |
public static function activeId($model,$attribute)
{
return self::getIdByName(self::activeName($model,$attribute));
}
Генерирует идентификатор поля ввода для атрибута модели.
activeInputField() метод
protected static string activeInputField(string $type, CModel $model, string $attribute, array $htmlOptions) | ||
| $type | строка | тип ввода (например, 'text', 'radio') |
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML для тега HTML |
| {return} | строка | сгенерированный тег ввода |
protected static function activeInputField($type,$model,$attribute,$htmlOptions)
{
$htmlOptions['type']=$type;
if($type==='text'||$type==='password'||$type==='color'||$type==='date'||$type==='datetime'||
$type==='datetime-local'||$type==='email'||$type==='month'||$type==='number'||$type==='range'||
$type==='search'||$type==='tel'||$type==='time'||$type==='url'||$type==='week')
{
if(!isset($htmlOptions['maxlength']))
{
foreach($model->getValidators($attribute) as $validator)
{
if($validator instanceof CStringValidator && $validator->max!==null)
{
$htmlOptions['maxlength']=$validator->max;
break;
}
}
}
elseif($htmlOptions['maxlength']===false)
unset($htmlOptions['maxlength']);
}
if($type==='file')
unset($htmlOptions['value']);
elseif(!isset($htmlOptions['value']))
$htmlOptions['value']=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
return self::tag('input',$htmlOptions);
}
Генерирует тег HTML ввода для атрибута модели. Этот метод генерирует тег HTML ввода на основе предоставленной модели данных и атрибута. Если атрибут содержит ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss. Это позволяет выделить неправильный ввод.
activeLabel() метод
public static string activeLabel(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Признаются следующие специальные параметры:
|
| {return} | строка | сгенерированный тег метки |
public static function activeLabel($model,$attribute,$htmlOptions=array())
{
$inputName=self::resolveName($model,$attribute);
if(isset($htmlOptions['for']))
{
$for=$htmlOptions['for'];
unset($htmlOptions['for']);
}
else
$for=self::getIdByName($inputName);
if(isset($htmlOptions['label']))
{
if(($label=$htmlOptions['label'])===false)
return '';
unset($htmlOptions['label']);
}
else
$label=$model->getAttributeLabel($attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
return self::label($label,$for,$htmlOptions);
}
Генерирует тег метки для атрибута модели. Текст метки — это метка атрибута, и метка связана с полем ввода для атрибута (см. CModel::getAttributeLabel). Если атрибут содержит ошибку ввода, к CSS-классу метки будет добавлен errorCss.
activeLabelEx() метод
public static string activeLabelEx(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. |
| {return} | строка | сгенеченный тег метки |
public static function activeLabelEx($model,$attribute,$htmlOptions=array())
{
$realAttribute=$attribute;
self::resolveName($model,$attribute); // strip off square brackets if any
if (!isset($htmlOptions['required']))
$htmlOptions['required']=$model->isAttributeRequired($attribute);
return self::activeLabel($model,$realAttribute,$htmlOptions);
}
Генерирует тег метки для атрибута модели. Это улучшенная версия activeLabel. Он будет рендерить дополнительный CSS-класс и отмечать, когда атрибут обязателен. В частности, он вызывает CModel::isAttributeRequired, чтобы определить, является ли атрибут обязательным. Если это так, он добавит CSS-класс CHtml::requiredCss к метке и украсит метку с помощью CHtml::beforeRequiredLabel и CHtml::afterRequiredLabel.
activeListBox() метод
public static string activeListBox(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $data | массив | данные для генерации опций списка (значение=>отображение) Вы можете использовать listData для генерации этих данных. Обратитесь к listOptions для получения информации о том, как эти данные используются для генерации опций списка. Обратите внимание, что значения и метки будут автоматически закодированы в HTML этим методом. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов. См. clientChange и tag для получения более подробной информации. Кроме того, поддерживаются следующие опции:
|
| {return} | строка | сгенерированный список |
public static function activeListBox($model,$attribute,$data,$htmlOptions=array())
{
if(!isset($htmlOptions['size']))
$htmlOptions['size']=4;
return self::activeDropDownList($model,$attribute,$data,$htmlOptions);
}
Генерирует список для атрибута модели. Значение атрибута модели используется в качестве выбора. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeName() метод
public static string activeName(CModel $model, string $attribute) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| {return} | строка | сгенерированное имя поля ввода |
public static function activeName($model,$attribute)
{
$a=$attribute; // because the attribute name may be changed by resolveName
return self::resolveName($model,$a);
}
Генерирует имя поля ввода для атрибута модели. В отличие от resolveName, этот метод НЕ изменяет имя атрибута.
activeNumberField() метод (доступен с версии 1.1.11)
public static string activeNumberField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activeNumberField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('number',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода числа для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activePasswordField() метод
public static string activePasswordField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации.) |
| {return} | строка | сгенерированное поле ввода |
public static function activePasswordField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('password',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода пароля для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeRadioButton() метод
public static string activeRadioButton(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации.) Доступна специальная опция 'uncheckValue', которая может использоваться для указания значения, возвращаемого, когда радиокнопка не выбрана. По умолчанию это значение '0'. Внутренне рендерится скрытое поле, так что при отсутствии выбора радиокнопки мы все равно можем получить отправленное значение uncheck. Если 'uncheckValue' задан как NULL, скрытое поле не будет рендериться. |
| {return} | строка | сгенерированная радиокнопка |
public static function activeRadioButton($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
if(!isset($htmlOptions['value']))
$htmlOptions['value']=1;
if(!isset($htmlOptions['checked']) && self::resolveValue($model,$attribute)==$htmlOptions['value'])
$htmlOptions['checked']='checked';
self::clientChange('click',$htmlOptions);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='0';
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=$uncheck!==null ? self::hiddenField($htmlOptions['name'],$uncheck,$hiddenOptions) : '';
// add a hidden field so that if the radio button is not selected, it still submits a value
return $hidden . self::activeInputField('radio',$model,$attribute,$htmlOptions);
}
Генерирует радиокнопку для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeRadioButtonList() метод
public static string activeRadioButtonList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $data | массив | пары значение-метка, используемые для создания списка радиокнопок. Обратите внимание, что значения будут автоматически закодированы в HTML, а метки — нет. |
| $htmlOptions | массив | дополнительные параметры HTML. Параметры будут применены к каждой радиокнопке. Распознаются следующие специальные параметры:
|
| {return} | строка | сгенерированный список радиокнопок |
public static function activeRadioButtonList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$name=$htmlOptions['name'];
unset($htmlOptions['name']);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='';
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=$uncheck!==null ? self::hiddenField($name,$uncheck,$hiddenOptions) : '';
return $hidden . self::radioButtonList($name,$selection,$data,$htmlOptions);
}
Генерирует список радиокнопок для атрибута модели. Значение атрибута модели используется в качестве выбора. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeRangeField() метод (доступен с версии 1.1.11)
public static string activeRangeField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeRangeField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('range',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода диапазона для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeSearchField() метод (доступен с версии 1.1.14)
public static string activeSearchField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeSearchField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('search',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода поиска для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeTelField() метод (доступен с версии 1.1.14)
public static string activeTelField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeTelField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('tel',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода телефона для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeTextArea() метод
public static string activeTextArea(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированная текстовая область |
public static function activeTextArea($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
if(isset($htmlOptions['value']))
{
$text=$htmlOptions['value'];
unset($htmlOptions['value']);
}
else
$text=self::resolveValue($model,$attribute);
return self::tag('textarea',$htmlOptions,isset($htmlOptions['encode']) && !$htmlOptions['encode'] ? $text : self::encode($text));
}
Генерирует текстовую область ввода для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeTextField() метод
public static string activeTextField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeTextField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('text',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода текста для атрибута модели. Если атрибут имеет ошибку ввода, к CSS-классу поля ввода будет добавлен errorCss.
См. также
activeTimeField() метод (доступен с версии 1.1.14)
public static string activeTimeField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeTimeField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('time',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода времени для атрибута модели. Если у атрибута есть ошибка ввода, к CSS классу поля ввода будет добавлен errorCss.
См. также
activeUrlField() метод (доступен начиная с v1.1.11)
public static string activeUrlField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeUrlField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('url',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода URL для атрибута модели. Если у атрибута есть ошибка ввода, к CSS классу поля ввода будет добавлен errorCss.
См. также
activeWeekField() метод (доступен начиная с v1.1.16)
public static string activeWeekField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function activeWeekField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
return self::activeInputField('week',$model,$attribute,$htmlOptions);
}
Генерирует поле ввода недели для атрибута модели. Если у атрибута есть ошибка ввода, к CSS классу поля ввода будет добавлен errorCss.
См. также
addErrorCss() метод
protected static void addErrorCss(array &$htmlOptions) | ||
| $htmlOptions | массив | HTML параметры для изменения |
protected static function addErrorCss(&$htmlOptions)
{
if(empty(self::$errorCss))
return;
if(isset($htmlOptions['class']))
$htmlOptions['class'].=' '.self::$errorCss;
else
$htmlOptions['class']=self::$errorCss;
}
Добавляет errorCss к атрибуту 'class'.
ajax() метод
public static string ajax(array $options) | ||
| $options | массив | AJAX параметры. Действительные параметры используются в форме jQuery.ajax([settings]), как указано в документации jQuery AJAX. Для удобства добавлены следующие специальные параметры:
|
| {return} | строка | сгенерированный JavaScript |
public static function ajax($options)
{
Yii::app()->getClientScript()->registerCoreScript('jquery');
if(!isset($options['url']))
$options['url']=new CJavaScriptExpression('location.href');
else
$options['url']=self::normalizeUrl($options['url']);
if(!isset($options['cache']))
$options['cache']=false;
if(!isset($options['data']) && isset($options['type']))
$options['data']=new CJavaScriptExpression('jQuery(this).parents("form").serialize()');
foreach(array('beforeSend','complete','error','success') as $name)
{
if(isset($options[$name]) && !($options[$name] instanceof CJavaScriptExpression))
$options[$name]=new CJavaScriptExpression($options[$name]);
}
if(isset($options['update']))
{
if(!isset($options['success']))
$options['success']=new CJavaScriptExpression('function(html){jQuery("'.$options['update'].'").html(html)}');
unset($options['update']);
}
if(isset($options['replace']))
{
if(!isset($options['success']))
$options['success']=new CJavaScriptExpression('function(html){jQuery("'.$options['replace'].'").replaceWith(html)}');
unset($options['replace']);
}
return 'jQuery.ajax('.CJavaScript::encode($options).');';
}
Генерирует JavaScript, который инициирует AJAX запрос.
ajaxButton() метод
public static string ajaxButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( )) | ||
| $label | строка | подпись кнопки |
| $url | смешанный тип | URL для AJAX запроса. Если пусто, используется текущий URL. Подробнее см. normalizeUrl. |
| $ajaxOptions | массив | AJAX параметры (см. ajax) |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированная кнопка |
public static function ajaxButton($label,$url,$ajaxOptions=array(),$htmlOptions=array())
{
$ajaxOptions['url']=$url;
$htmlOptions['ajax']=$ajaxOptions;
return self::button($label,$htmlOptions);
}
Генерирует кнопку, которая может инициировать AJAX запросы.
ajaxLink() метод
public static string ajaxLink(string $text, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( )) | ||
| $text | строка | тело ссылки (не будет кодироваться HTML). |
| $url | смешанный тип | URL для AJAX запроса. Если пусто, используется текущий URL. Подробнее см. normalizeUrl. |
| $ajaxOptions | массив | AJAX параметры (см. ajax) |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированная ссылка |
public static function ajaxLink($text,$url,$ajaxOptions=array(),$htmlOptions=array())
{
if(!isset($htmlOptions['href']))
$htmlOptions['href']='#';
$ajaxOptions['url']=$url;
$htmlOptions['ajax']=$ajaxOptions;
self::clientChange('click',$htmlOptions);
return self::tag('a',$htmlOptions,$text);
}
Генерирует ссылку, которая может инициировать AJAX запросы.
См. также
ajaxSubmitButton() метод
public static string ajaxSubmitButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( )) | ||
| $label | строка | подпись кнопки |
| $url | смешанный тип | URL для AJAX запроса. Если пусто, используется текущий URL. Подробнее см. normalizeUrl. |
| $ajaxOptions | массив | AJAX параметры (см. ajax) |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированная кнопка |
public static function ajaxSubmitButton($label,$url,$ajaxOptions=array(),$htmlOptions=array())
{
$ajaxOptions['type']='POST';
$htmlOptions['type']='submit';
return self::ajaxButton($label,$url,$ajaxOptions,$htmlOptions);
}
Генерирует кнопку, которая может отправлять текущую форму методом POST.
asset() метод
public static string asset(string $path, boolean $hashByName=false) | ||
| $path | string | путь к публикуемому ресурсу |
| $hashByName | boolean | указывает, следует ли называть опубликованный каталог хешированным базовым именем. Если ложно, имя будет хешированным подкаталогом пути, который публикуется. По умолчанию ложно. Установите в значение истина, если путь, который публикуется, используется в разных расширениях. |
| {return} | string | URL ресурса |
public static function asset($path,$hashByName=false)
{
return Yii::app()->getAssetManager()->publish($path,$hashByName);
}
Генерирует URL для опубликованных ресурсов.
beginForm() метод
public static string beginForm(mixed $action='', string $method='post', array $htmlOptions=array ( )) | ||
| $action | смешанный тип | URL действия формы (см. normalizeUrl для получения подробностей об этом параметре). |
| $method | строка | метод формы (например, post, get) |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. tag). |
| {return} | строка | сгенерированный тег формы. |
public static function beginForm($action='',$method='post',$htmlOptions=array())
{
$htmlOptions['action']=$url=self::normalizeUrl($action);
if(strcasecmp($method,'get')!==0 && strcasecmp($method,'post')!==0)
{
$customMethod=$method;
$method='post';
}
else
$customMethod=false;
$htmlOptions['method']=$method;
$form=self::tag('form',$htmlOptions,false,false);
$hiddens=array();
if(!strcasecmp($method,'get') && ($pos=strpos($url,'?'))!==false)
{
foreach(explode('&',substr(preg_replace('/#.+$/','',$url),$pos+1)) as $pair)
{
if(($pos=strpos($pair,'='))!==false)
$hiddens[]=self::hiddenField(urldecode(substr($pair,0,$pos)),urldecode(substr($pair,$pos+1)),array('id'=>false));
else
$hiddens[]=self::hiddenField(urldecode($pair),'',array('id'=>false));
}
}
$request=Yii::app()->request;
if($request->enableCsrfValidation && !strcasecmp($method,'post'))
$hiddens[]=self::hiddenField($request->csrfTokenName,$request->getCsrfToken(),array('id'=>false));
if($customMethod!==false)
$hiddens[]=self::hiddenField('_method',$customMethod);
if($hiddens!==array())
$form.="\n".implode("\n",$hiddens);
return $form;
}
Генерирует открывающий тег формы. Обратите внимание, что генерируется только открывающий тег. Закрывающий тег необходимо разместить вручную в конце формы.
См. также
button() метод
public static string button(string $label='button', array $htmlOptions=array ( )) | ||
| $label | строка | метка кнопки |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (см. clientChange и tag для получения дополнительных сведений). |
| {return} | строка | сгенерированный тег кнопки |
public static function button($label='button',$htmlOptions=array())
{
if(!isset($htmlOptions['name']))
{
if(!array_key_exists('name',$htmlOptions))
$htmlOptions['name']=self::ID_PREFIX.self::$count++;
}
if(!isset($htmlOptions['type']))
$htmlOptions['type']='button';
if(!isset($htmlOptions['value']) && $htmlOptions['type']!='image')
$htmlOptions['value']=$label;
self::clientChange('click',$htmlOptions);
return self::tag('input',$htmlOptions);
}
Генерирует кнопку.
См. также
cdata() метод
public static string cdata(string $text) | ||
| $text | строка | строка, которая будет обрамляться тегом |
| {return} | строка | тег CDATA с заключённым содержимым. |
public static function cdata($text)
{
return '<![CDATA[' . $text . ']]>';
}
Обрамляет заданную строку тегом CDATA.
checkBox() метод
public static string checkBox(string $name, boolean $checked=false, array $htmlOptions=array ( )) | ||
| $name | строка | имя ввода |
| $checked | boolean | установлено ли значение по умолчанию |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (см. clientChange и tag для получения дополнительных сведений). Начиная с версии 1.1.2, доступен специальный параметр 'uncheckValue', который можно использовать для указания значения, возвращаемого, когда флажок не установлен. Если задано и не равно NULL, отображается скрытое поле, чтобы при отсутствии флага получить отправленное значение uncheckValue. Если 'uncheckValue' не задан или установлен в NULL, скрытое поле не отображается. |
| {return} | строка | сгенерированный флажок |
public static function checkBox($name,$checked=false,$htmlOptions=array())
{
if($checked)
$htmlOptions['checked']='checked';
else
unset($htmlOptions['checked']);
$value=isset($htmlOptions['value']) ? $htmlOptions['value'] : 1;
self::clientChange('click',$htmlOptions);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck=null;
if($uncheck!==null)
{
// add a hidden field so that if the check box is not checked, it still submits a value
if(isset($htmlOptions['id']) && $htmlOptions['id']!==false)
$uncheckOptions=array('id'=>self::ID_PREFIX.$htmlOptions['id']);
else
$uncheckOptions=array('id'=>false);
if(!empty($htmlOptions['disabled']))
$uncheckOptions['disabled']=$htmlOptions['disabled'];
$hidden=self::hiddenField($name,$uncheck,$uncheckOptions);
}
else
$hidden='';
// add a hidden field so that if the check box is not checked, it still submits a value
return $hidden . self::inputField('checkbox',$name,$value,$htmlOptions);
}
Генерирует флажок.
См. также
checkBoxList() метод
public static string checkBoxList(string $name, mixed $select, array $data, array $htmlOptions=array ( )) | ||
| $name | строка | имя списка флагов. Вы можете использовать это имя для получения выбранного значения(й) после отправки формы. |
| $select | смешанный тип | выбор флагов. Это может быть строка для одиночного выбора или массив для множественного выбора. |
| $data | массив | пары значение-метка, используемые для генерации списка флагов. Обратите внимание, что значения будут автоматически закодированы в HTML, а метки — нет. |
| $htmlOptions | массив | дополнительные параметры HTML. Параметры будут применены к каждому флажку. Распознаются следующие специальные параметры:
|
| {return} | строка | сгенерированный список флагов |
public static function checkBoxList($name,$select,$data,$htmlOptions=array())
{
$template=isset($htmlOptions['template'])?$htmlOptions['template']:'{input} {label}';
$separator=isset($htmlOptions['separator'])?$htmlOptions['separator']:self::tag('br');
$container=isset($htmlOptions['container'])?$htmlOptions['container']:'span';
unset($htmlOptions['template'],$htmlOptions['separator'],$htmlOptions['container']);
if(substr($name,-2)!=='[]')
$name.='[]';
if(isset($htmlOptions['checkAll']))
{
$checkAllLabel=$htmlOptions['checkAll'];
$checkAllLast=isset($htmlOptions['checkAllLast']) && $htmlOptions['checkAllLast'];
}
unset($htmlOptions['checkAll'],$htmlOptions['checkAllLast']);
$labelOptions=isset($htmlOptions['labelOptions'])?$htmlOptions['labelOptions']:array();
unset($htmlOptions['labelOptions']);
$items=array();
$baseID=isset($htmlOptions['baseID']) ? $htmlOptions['baseID'] : self::getIdByName($name);
unset($htmlOptions['baseID']);
$id=0;
$checkAll=true;
foreach($data as $value=>$labelTitle)
{
$checked=!is_array($select) && !strcmp($value,$select) || is_array($select) && in_array($value,$select);
$checkAll=$checkAll && $checked;
$htmlOptions['value']=$value;
$htmlOptions['id']=$baseID.'_'.$id++;
$option=self::checkBox($name,$checked,$htmlOptions);
$beginLabel=self::openTag('label',$labelOptions);
$label=self::label($labelTitle,$htmlOptions['id'],$labelOptions);
$endLabel=self::closeTag('label');
$items[]=strtr($template,array(
'{input}'=>$option,
'{beginLabel}'=>$beginLabel,
'{label}'=>$label,
'{labelTitle}'=>$labelTitle,
'{endLabel}'=>$endLabel,
));
}
if(isset($checkAllLabel))
{
$htmlOptions['value']=1;
$htmlOptions['id']=$id=$baseID.'_all';
$option=self::checkBox($id,$checkAll,$htmlOptions);
$beginLabel=self::openTag('label',$labelOptions);
$label=self::label($checkAllLabel,$id,$labelOptions);
$endLabel=self::closeTag('label');
$item=strtr($template,array(
'{input}'=>$option,
'{beginLabel}'=>$beginLabel,
'{label}'=>$label,
'{labelTitle}'=>$checkAllLabel,
'{endLabel}'=>$endLabel,
));
if($checkAllLast)
$items[]=$item;
else
array_unshift($items,$item);
$name=strtr($name,array('['=>'\\[',']'=>'\\]'));
$js=<<<EOD
jQuery('#$id').click(function() {
jQuery("input[name='$name']").prop('checked', this.checked);
});
jQuery("input[name='$name']").click(function() {
jQuery('#$id').prop('checked', !jQuery("input[name='$name']:not(:checked)").length);
});
jQuery('#$id').prop('checked', !jQuery("input[name='$name']:not(:checked)").length);
EOD;
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
$cs->registerScript($id,$js);
}
if(empty($container))
return implode($separator,$items);
else
return self::tag($container,array('id'=>$baseID),implode($separator,$items));
}
Генерирует список флагов. Список флагов позволяет выполнять множественный выбор, как listBox. В результате соответствующее значение POST является массивом.
clientChange() метод
protected static void clientChange(string $event, array &$htmlOptions) | ||
| $event | строка | имя события (без 'on') |
| $htmlOptions | массив | атрибуты HTML, которые могут содержать следующие специальные атрибуты, определяющие поведение при изменении клиента:
|
protected static function clientChange($event,&$htmlOptions)
{
if(!isset($htmlOptions['submit']) && !isset($htmlOptions['confirm']) && !isset($htmlOptions['ajax']))
return;
if(isset($htmlOptions['live']))
{
$live=$htmlOptions['live'];
unset($htmlOptions['live']);
}
else
$live = self::$liveEvents;
if(isset($htmlOptions['return']) && $htmlOptions['return'])
$return='return true';
else
$return='return false';
if(isset($htmlOptions['on'.$event]))
{
$handler=trim($htmlOptions['on'.$event],';').';';
unset($htmlOptions['on'.$event]);
}
else
$handler='';
if(isset($htmlOptions['id']))
$id=$htmlOptions['id'];
else
$id=$htmlOptions['id']=isset($htmlOptions['name'])?$htmlOptions['name']:self::ID_PREFIX.self::$count++;
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
if(isset($htmlOptions['submit']))
{
$cs->registerCoreScript('yii');
$request=Yii::app()->getRequest();
if($request->enableCsrfValidation && isset($htmlOptions['csrf']) && $htmlOptions['csrf'])
$htmlOptions['params'][$request->csrfTokenName]=$request->getCsrfToken();
if(isset($htmlOptions['params']))
$params=CJavaScript::encode($htmlOptions['params']);
else
$params='{}';
if($htmlOptions['submit']!=='')
$url=CJavaScript::quote(self::normalizeUrl($htmlOptions['submit']));
else
$url='';
$handler.="jQuery.yii.submitForm(this,'$url',$params);{$return};";
}
if(isset($htmlOptions['ajax']))
$handler.=self::ajax($htmlOptions['ajax'])."{$return};";
if(isset($htmlOptions['confirm']))
{
$confirm='confirm(\''.CJavaScript::quote($htmlOptions['confirm']).'\')';
if($handler!=='')
$handler="if($confirm) {".$handler."} else return false;";
else
$handler="return $confirm;";
}
if($live)
$cs->registerScript('Yii.CHtml.#' . $id,"jQuery('body').on('$event','#$id',function(){{$handler}});");
else
$cs->registerScript('Yii.CHtml.#' . $id,"jQuery('#$id').on('$event', function(){{$handler}});");
unset($htmlOptions['params'],$htmlOptions['submit'],$htmlOptions['ajax'],$htmlOptions['confirm'],$htmlOptions['return'],$htmlOptions['csrf']);
}
Генерирует JavaScript с указанными изменениями клиента.
closeTag() метод
public static string closeTag(string $tag) | ||
| $tag | строка | имя тега |
| {return} | строка | сгенерированное HTML-тег элемента |
public static function closeTag($tag)
{
return '</'.$tag.'>';
}
Генерирует закрывающий HTML-элемент.
colorField() метод (доступен начиная с v1.1.16)
public static string colorField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function colorField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('color',$name,$value,$htmlOptions);
}
Генерирует поле ввода для выбора цвета.
См. также
css() метод
public static string css(string $text, string $media='') | ||
| $text | строка | содержимое CSS |
| $media | строка | среда, к которой должен применяться этот CSS. |
| {return} | строка | правильно заключённый CSS |
public static function css($text,$media='')
{
if($media!=='')
$media=' media="'.$media.'"';
return "<style type=\"text/css\"{$media}>\n/*<![CDATA[*/\n{$text}\n/*]]>*/\n</style>";
}
Заключает предоставленное содержимое CSS в теге CSS.
cssFile() метод
public static string cssFile(string $url, string $media='') | ||
| $url | строка | URL CSS |
| $media | строка | среда, к которой должен применяться этот CSS. |
| {return} | строка | ссылка на CSS. |
public static function cssFile($url,$media='')
{
return CHtml::linkTag('stylesheet','text/css',$url,$media!=='' ? $media : null);
}
Устанавливает ссылку на указанный файл CSS.
dateField() метод (доступен начиная с v1.1.14)
public static string dateField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function dateField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('date',$name,$value,$htmlOptions);
}
Генерирует поле ввода для даты.
См. также
dateTimeField() метод (доступен начиная с v1.1.16)
public static string dateTimeField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function dateTimeField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('datetime',$name,$value,$htmlOptions);
}
Генерирует поле ввода для даты и времени.
См. также
dateTimeLocalField() метод (доступен начиная с v1.1.16)
public static string dateTimeLocalField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function dateTimeLocalField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('datetime-local',$name,$value,$htmlOptions);
}
Генерирует поле ввода для локальной даты и времени.
См. также
decode() метод (доступен начиная с v1.1.8)
public static string decode(string $text) | ||
| $text | строка | данные для декодирования |
| {return} | строка | декодированные данные |
public static function decode($text)
{
return htmlspecialchars_decode($text,ENT_QUOTES);
}
Декодирует специальные HTML-сущности обратно в соответствующие символы. Это противоположно encode().
dropDownList() метод
public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( )) | ||
| $name | string | имя входного поля |
| $select | string | выбранное значение |
| $data | массив | данные для генерации списка опций (значение=>отображение). Вы можете использовать listData для генерации этих данных. Обратитесь к listOptions для получения информации о том, как эти данные используются для генерации списка опций. Обратите внимание, что значения и метки будут автоматически закодированы в HTML этим методом. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются несколько специальных атрибутов. Подробнее см. clientChange и tag. Кроме того, для выпадающего списка также поддерживаются следующие опции:
|
| {return} | строка | сгенерированный выпадающий список |
public static function dropDownList($name,$select,$data,$htmlOptions=array())
{
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
self::clientChange('change',$htmlOptions);
$options="\n".self::listOptions($select,$data,$htmlOptions);
$hidden='';
if(!empty($htmlOptions['multiple']))
{
if(substr($htmlOptions['name'],-2)!=='[]')
$htmlOptions['name'].='[]';
if(isset($htmlOptions['unselectValue']))
{
$hiddenOptions=isset($htmlOptions['id']) ? array('id'=>self::ID_PREFIX.$htmlOptions['id']) : array('id'=>false);
if(!empty($htmlOptions['disabled']))
$hiddenOptions['disabled']=$htmlOptions['disabled'];
$hidden=self::hiddenField(substr($htmlOptions['name'],0,-2),$htmlOptions['unselectValue'],$hiddenOptions);
unset($htmlOptions['unselectValue']);
}
}
// add a hidden field so that if the option is not selected, it still submits a value
return $hidden . self::tag('select',$htmlOptions,$options);
}
Генерирует выпадающий список.
См. также
emailField() метод (доступен с версии v1.1.14)
public static string emailField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя входного поля |
| $value | строка | значение входного поля |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, также распознаются несколько специальных атрибутов (см. clientChange и tag для более подробной информации.) |
| {return} | строка | сгенерированное входное поле |
public static function emailField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('email',$name,$value,$htmlOptions);
}
Генерирует входное поле для ввода адреса электронной почты.
См. также
encode() метод
public static string encode(string $text) | ||
| $text | строка | данные, которые нужно закодировать |
| {return} | строка | закодированные данные |
public static function encode($text)
{
return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
}
Кодирует специальные символы в HTML-сущности. Для кодирования будет использоваться кодировка приложения.
encodeArray() метод
public static array encodeArray(array $data) | ||
| $data | массив | данные, которые нужно закодировать |
| {return} | массив | закодированные данные |
public static function encodeArray($data)
{
$d=array();
foreach($data as $key=>$value)
{
if(is_string($key))
$key=htmlspecialchars($key,ENT_QUOTES,Yii::app()->charset);
if(is_string($value))
$value=htmlspecialchars($value,ENT_QUOTES,Yii::app()->charset);
elseif(is_array($value))
$value=self::encodeArray($value);
$d[$key]=$value;
}
return $d;
}
Кодирует специальные символы в массиве строк в HTML-сущности. Если необходимо, будут закодированы и ключи, и значения массива. Если значение является массивом, этот метод также закодирует его рекурсивно. Для кодирования будет использоваться кодировка приложения.
endForm() метод
public static string endForm() | ||
| {return} | строка | сгенерированный тег |
public static function endForm()
{
return '</form>';
}
Генерирует закрывающий тег формы.
См. также
error() метод
public static string error(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
| $model | CModel | модель данных |
| $attribute | строка | имя атрибута |
| $htmlOptions | массив | дополнительные атрибуты HTML, которые нужно отобразить в контейнерном теге. |
| {return} | строка | отображение ошибки. Пустая строка, если ошибки не найдены. |
public static function error($model,$attribute,$htmlOptions=array())
{
self::resolveName($model,$attribute); // turn [a][b]attr into attr
$error=self::encode($model->getError($attribute));
if($error!='')
{
if(!isset($htmlOptions['class']))
$htmlOptions['class']=self::$errorMessageCss;
return self::tag(self::$errorContainerTag,$htmlOptions,$error);
}
else
return '';
}
Отображает первую ошибку валидации для атрибута модели.
См. также
- CModel::getErrors
- errorMessageCss
- $errorContainerTag
errorSummary() метод
public static string errorSummary(mixed $model, string $header=NULL, string $footer=NULL, array $htmlOptions=array ( )) | ||
| $model | смешанный тип | модели, ошибки ввода которых необходимо отобразить. Это может быть одна модель или массив моделей. |
| $header | строка | фрагмент кода HTML, отображаемый перед ошибками |
| $footer | строка | фрагмент кода HTML, отображаемый в конце ошибок |
| $htmlOptions | массив | дополнительные атрибуты HTML, которые нужно отобразить в контейнерном теге div. Специальная опция с именем 'firstError', если она установлена в true, заставит вывод сводки ошибок показывать только первое сообщение об ошибке для каждого атрибута. Если она не установлена или установлена в false, будут отображаться все сообщения об ошибках. Эта опция доступна с версии 1.1.3. |
| {return} | строка | сводка ошибок. Пустая строка, если ошибки не найдены. |
public static function errorSummary($model,$header=null,$footer=null,$htmlOptions=array())
{
$content='';
if(!is_array($model))
$model=array($model);
if(isset($htmlOptions['firstError']))
{
$firstError=$htmlOptions['firstError'];
unset($htmlOptions['firstError']);
}
else
$firstError=false;
foreach($model as $m)
{
foreach($m->getErrors() as $errors)
{
foreach($errors as $error)
{
if($error!='')
$content.= '<li>'.self::encode($error)."</li>\n";
if($firstError)
break;
}
}
}
if($content!=='')
{
if($header===null)
$header='<p>'.Yii::t('yii','Please fix the following input errors:').'</p>';
if(!isset($htmlOptions['class']))
$htmlOptions['class']=self::$errorSummaryCss;
return self::tag('div',$htmlOptions,$header."\n<ul>\n$content</ul>".$footer);
}
else
return '';
}
Отображает сводку ошибок валидации для одной или нескольких моделей.
См. также
fileField() метод
public static string fileField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя входного поля |
| $value | строка | значение входного поля |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. tag). |
| {return} | строка | сгенерированное входное поле |
public static function fileField($name,$value='',$htmlOptions=array())
{
return self::inputField('file',$name,$value,$htmlOptions);
}
Генерирует элемент ввода файла. Обратите внимание, что вам нужно установить атрибут 'enctype' окружающего элемента формы в 'multipart/form-data'. После отправки формы информацию об загруженном файле можно получить через $_FILES[$name] (см. документацию PHP).
См. также
form() метод
public static string form(mixed $action='', string $method='post', array $htmlOptions=array ( )) | ||
| $action | смешанный тип | URL действия формы (см. normalizeUrl для получения подробностей об этом параметре.) |
| $method | строка | метод формы (например, post, get) |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. тег). |
| {возврат} | строка | сгенерированный тег формы. |
public static function form($action='',$method='post',$htmlOptions=array())
{
return self::beginForm($action,$method,$htmlOptions);
}
Генерирует открывающий тег формы. Это сокращение для beginForm.
getIdByName() метод
public static string getIdByName(string $name) | ||
| $name | строка | имя, на основе которого генерируется HTML-идентификатор |
| {возврат} | строка | сгенерированный идентификатор на основе имени. |
public static function getIdByName($name)
{
return str_replace(array('[]','][','[',']',' '),array('','_','_','','_'),$name);
}
Генерирует допустимый HTML-идентификатор на основе имени.
hiddenField() метод
public static string hiddenField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя элемента ввода |
| $value | строка | значение элемента ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. тег). |
| {возврат} | строка | сгенерированное поле ввода |
public static function hiddenField($name,$value='',$htmlOptions=array())
{
return self::inputField('hidden',$name,$value,$htmlOptions);
}
Генерирует скрытое поле ввода.
См. также
htmlButton() метод
public static string htmlButton(string $label='button', array $htmlOptions=array ( )) | ||
| $label | строка | метка кнопки. Обратите внимание, что это значение будет вставлено непосредственно в элемент кнопки без HTML-кодирования. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации.) |
| {возврат} | строка | сгенерированный тег кнопки |
public static function htmlButton($label='button',$htmlOptions=array())
{
if(!isset($htmlOptions['name']))
$htmlOptions['name']=self::ID_PREFIX.self::$count++;
if(!isset($htmlOptions['type']))
$htmlOptions['type']='button';
self::clientChange('click',$htmlOptions);
return self::tag('button',$htmlOptions,$label);
}
Генерирует кнопку с помощью тега HTML button. Этот метод похож на button, за исключением того, что он генерирует тег 'button' вместо тега 'input'.
См. также
image() метод
public static string image(string $src, string $alt='', array $htmlOptions=array ( )) | ||
| $src | строка | URL изображения |
| $alt | строка | текст альтернативного отображения |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. тег). |
| {возврат} | строка | сгенерированный тег изображения |
public static function image($src,$alt='',$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['alt']=$alt;
return self::tag('img',$htmlOptions);
}
Генерирует тег изображения.
imageButton() метод
public static string imageButton(string $src, array $htmlOptions=array ( )) | ||
| $src | строка | URL изображения |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации.) |
| {возврат} | строка | сгенерированный тег кнопки |
public static function imageButton($src,$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['type']='image';
return self::button('submit',$htmlOptions);
}
Генерирует кнопку отправки изображения.
См. также
inputField() метод
protected static string inputField(string $type, string $name, string $value, array $htmlOptions) | ||
| $type | строка | тип ввода (например, 'text', 'radio') |
| $name | строка | имя элемента ввода |
| $value | строка | значение элемента ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML для тега (см. тег). |
| {возврат} | строка | сгенерированный тег ввода |
protected static function inputField($type,$name,$value,$htmlOptions)
{
$htmlOptions['type']=$type;
$htmlOptions['value']=$value;
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
return self::tag('input',$htmlOptions);
}
Генерирует тег HTML ввода. Этот метод генерирует тег HTML ввода на основе заданного имени и значения ввода.
label() метод
public static string label(string $label, string $for, array $htmlOptions=array ( )) | ||
| $label | строка | текст метки. Обратите внимание, что текст необходимо HTML-кодировать при необходимости. |
| $for | строка | идентификатор HTML-элемента, к которому относится эта метка. Если это false, атрибут 'for' для тега метки не будет отображен. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Распознаётся следующий атрибут HTML:
|
| {возврат} | строка | сгенерированный тег метки |
public static function label($label,$for,$htmlOptions=array())
{
if($for===false)
unset($htmlOptions['for']);
else
$htmlOptions['for']=$for;
if(isset($htmlOptions['required']))
{
if($htmlOptions['required'])
{
if(isset($htmlOptions['class']))
$htmlOptions['class'].=' '.self::$requiredCss;
else
$htmlOptions['class']=self::$requiredCss;
$label=self::$beforeRequiredLabel.$label.self::$afterRequiredLabel;
}
unset($htmlOptions['required']);
}
return self::tag('label',$htmlOptions,$label);
}
Генерирует тег метки.
link() метод
public static string link(string $text, mixed $url='#', array $htmlOptions=array ( )) | ||
| $text | строка | тело ссылки. Оно НЕ будет HTML-кодировано. Поэтому вы можете передавать HTML-код, например, тег изображения. |
| $url | смешанный тип | URL или маршрут действия, который может быть использован для создания URL. См. normalizeUrl для получения более подробной информации о том, как указать этот параметр. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации.) |
| {возврат} | строка | сгенерированная гиперссылка |
public static function link($text,$url='#',$htmlOptions=array())
{
if($url!=='')
$htmlOptions['href']=self::normalizeUrl($url);
self::clientChange('click',$htmlOptions);
return self::tag('a',$htmlOptions,$text);
}
Генерирует тег гиперссылки.
См. также
linkButton() метод
public static string linkButton(string $label='submit', array $htmlOptions=array ( )) | ||
| $label | строка | метка кнопки |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {return} | строка | сгенерированный тег кнопки |
public static function linkButton($label='submit',$htmlOptions=array())
{
if(!isset($htmlOptions['submit']))
$htmlOptions['submit']=isset($htmlOptions['href']) ? $htmlOptions['href'] : '';
return self::link($label,'#',$htmlOptions);
}
Генерирует кнопку отправки ссылки.
См. также
linkTag() метод
public static string linkTag(string $relation=NULL, string $type=NULL, string $href=NULL, string $media=NULL, array $options=array ( )) | ||
| $relation | строка | атрибут rel тега ссылки. Если null, атрибут не будет сгенерирован. |
| $type | строка | атрибут type тега ссылки. Если null, атрибут не будет сгенерирован. |
| $href | строка | атрибут href тега ссылки. Если null, атрибут не будет сгенерирован. |
| $media | строка | атрибут media тега ссылки. Если null, атрибут не будет сгенерирован. |
| $options | массив | другие параметры в формате имя-значение |
| {return} | строка | сгенерированный тег ссылки |
public static function linkTag($relation=null,$type=null,$href=null,$media=null,$options=array())
{
if($relation!==null)
$options['rel']=$relation;
if($type!==null)
$options['type']=$type;
if($href!==null)
$options['href']=$href;
if($media!==null)
$options['media']=$media;
return self::tag('link',$options);
}
Генерирует тег ссылки, который можно вставить в секцию head HTML-страницы. Не путайте этот метод с link(). Последний генерирует гиперссылку.
listBox() метод
public static string listBox(string $name, mixed $select, array $data, array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $select | смешанный тип | выбранное(ые) значение(я). Может быть строкой для одиночного выбора или массивом для множественного выбора. |
| $data | массив | данные для генерации опций списка (значение=>отображение). Вы можете использовать listData для генерации этих данных. Обратитесь к listOptions для получения информации о том, как эти данные используются для генерации опций списка. Обратите внимание, что значения и метки автоматически кодируются в HTML этим методом. |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты. См. clientChange и тег для получения более подробной информации. Кроме того, поддерживаются следующие параметры, специфичные для списка:
|
| {return} | строка | сгенерированный список |
public static function listBox($name,$select,$data,$htmlOptions=array())
{
if(!isset($htmlOptions['size']))
$htmlOptions['size']=4;
if(!empty($htmlOptions['multiple']))
{
if(substr($name,-2)!=='[]')
$name.='[]';
}
return self::dropDownList($name,$select,$data,$htmlOptions);
}
Генерирует список.
См. также
listData() метод
public static array listData(array $models, mixed $valueField, mixed $textField, mixed $groupField='') | ||
| $models | массив | список объектов модели. Этот параметр также может быть массивом ассоциативных массивов (например, результаты CDbCommand::queryAll). |
| $valueField | смешанный тип | имя атрибута или анонимная функция (PHP 5.3+) для значений опций списка |
| $textField | смешанный тип | имя атрибута или анонимная функция (PHP 5.3+) для текстов опций списка |
| $groupField | смешанный тип | имя атрибута или анонимная функция (PHP 5.3+) для имен групп опций списка. Если пусто, группы не будут сгенерированы. |
| {return} | массив | данные списка, которые можно использовать в dropDownList, listBox и т.д. |
public static function listData($models,$valueField,$textField,$groupField='')
{
$listData=array();
if($groupField==='')
{
foreach($models as $model)
{
$value=self::value($model,$valueField);
$text=self::value($model,$textField);
$listData[$value]=$text;
}
}
else
{
foreach($models as $model)
{
$group=self::value($model,$groupField);
$value=self::value($model,$valueField);
$text=self::value($model,$textField);
if($group===null)
$listData[$value]=$text;
else
$listData[$group][$value]=$text;
}
}
return $listData;
}
Генерирует данные, подходящие для элементов HTML на основе списков. Сгенерированные данные могут быть использованы в dropDownList, listBox, checkBoxList, radioButtonList и их активных версиях (например, activeDropDownList). Обратите внимание, что этот метод не кодирует сгенерированные данные в HTML. Вы можете вызвать encodeArray для их кодирования, если это необходимо. Обратитесь к методу value для указания поля значения, поля текста и поля группы. Вы также можете передавать анонимные функции как второй, третий и четвертый аргументы, которые вычисляют значение поля текста (только PHP 5.3+) начиная с 1.1.13. Ваша анонимная функция должна принимать один аргумент — модель, из которой генерируется текущий тег <option>.
CHtml::listData($posts,'id',function($post) {
return CHtml::encode($post->title);
});
listOptions() метод
public static string listOptions(mixed $selection, array $listData, array &$htmlOptions) | ||
| $selection | смешанный тип | выбранное(ые) значение(я). Может быть строкой для одиночного выбора или массивом для множественного выбора. |
| $listData | массив | данные опций (см. listData) |
| $htmlOptions | массив | дополнительные атрибуты HTML. Распознаются следующие два специальных атрибута:
|
| {return} | строка | сгенерированные опции списка |
public static function listOptions($selection,$listData,&$htmlOptions)
{
$raw=isset($htmlOptions['encode']) && !$htmlOptions['encode'];
$content='';
if(isset($htmlOptions['prompt']))
{
$content.='<option value="">'.strtr($htmlOptions['prompt'],array('<'=>'<','>'=>'>'))."</option>\n";
unset($htmlOptions['prompt']);
}
if(isset($htmlOptions['empty']))
{
if(!is_array($htmlOptions['empty']))
$htmlOptions['empty']=array(''=>$htmlOptions['empty']);
foreach($htmlOptions['empty'] as $value=>$label)
$content.='<option value="'.self::encode($value).'">'.strtr($label,array('<'=>'<','>'=>'>'))."</option>\n";
unset($htmlOptions['empty']);
}
if(isset($htmlOptions['options']))
{
$options=$htmlOptions['options'];
unset($htmlOptions['options']);
}
else
$options=array();
$key=isset($htmlOptions['key']) ? $htmlOptions['key'] : 'primaryKey';
if(is_array($selection))
{
foreach($selection as $i=>$item)
{
if(is_object($item))
$selection[$i]=$item->$key;
}
}
elseif(is_object($selection))
$selection=$selection->$key;
foreach($listData as $key=>$value)
{
if(is_array($value))
{
$content.='<optgroup label="'.($raw?$key : self::encode($key))."\">\n";
$dummy=array('options'=>$options);
if(isset($htmlOptions['encode']))
$dummy['encode']=$htmlOptions['encode'];
$content.=self::listOptions($selection,$value,$dummy);
$content.='</optgroup>'."\n";
}
else
{
$attributes=array('value'=>(string)$key,'encode'=>!$raw);
if(!is_array($selection) && !strcmp($key,$selection) || is_array($selection) && in_array($key,$selection))
$attributes['selected']='selected';
if(isset($options[$key]))
$attributes=array_merge($attributes,$options[$key]);
$content.=self::tag('option',$attributes,$raw?(string)$value : self::encode((string)$value))."\n";
}
}
unset($htmlOptions['key']);
return $content;
}
Генерирует опции списка.
mailto() метод
public static string mailto(string $text, string $email='', array $htmlOptions=array ( )) | ||
| $text | строка | тело ссылки. Оно НЕ будет кодироваться в HTML. Поэтому вы можете передавать HTML-код, такой как тег изображения. |
| строка | адрес электронной почты. Если он пустой, первый параметр (тело ссылки) будет обрабатываться как адрес электронной почты. | |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {return} | строка | сгенерированная ссылка mailto |
public static function mailto($text,$email='',$htmlOptions=array())
{
if($email==='')
$email=$text;
return self::link($text,'mailto:'.$email,$htmlOptions);
}
Генерирует ссылку mailto.
См. также
metaTag() метод
public static string metaTag(string $content, string $name=NULL, string $httpEquiv=NULL, array $options=array ( )) | ||
| $content | строка | атрибут содержимого тега meta |
| $name | строка | атрибут name тега meta. Если null, атрибут не будет сгенерирован |
| $httpEquiv | строка | атрибут http-equiv тега meta. Если null, атрибут не будет сгенерирован |
| $options | массив | другие параметры в виде пар имя-значение (например, 'scheme', 'lang') |
| {возвращает} | строка | сгенерированный тег meta |
public static function metaTag($content,$name=null,$httpEquiv=null,$options=array())
{
if($name!==null)
$options['name']=$name;
if($httpEquiv!==null)
$options['http-equiv']=$httpEquiv;
$options['content']=$content;
return self::tag('meta',$options);
}
Генерирует тег meta, который может быть вставлен в секцию head HTML-страницы.
modelName() метод (доступен с версии v1.1.14)
public static string modelName(CModel|string $model) | ||
| $model | CModel|строка | модель данных или имя класса модели |
| {возвращает} | строка | сгенерированное HTML имя-значение |
public static function modelName($model)
{
if(is_callable(self::$_modelNameConverter))
return call_user_func(self::$_modelNameConverter,$model);
$className=is_object($model) ? get_class($model) : (string)$model;
return trim(str_replace('\\','_',$className),'_');
}
Генерирует HTML имя для заданной модели.
См. также
normalizeUrl() метод
public static string normalizeUrl(mixed $url) | ||
| $url | смешанный тип | параметр, используемый для генерации корректного URL |
| {возвращает} | строка | нормализованный URL |
public static function normalizeUrl($url)
{
if(is_array($url))
{
if(isset($url[0]))
{
if(($c=Yii::app()->getController())!==null)
$url=$c->createUrl($url[0],array_splice($url,1));
else
$url=Yii::app()->createUrl($url[0],array_splice($url,1));
}
else
$url='';
}
return $url==='' ? Yii::app()->getRequest()->getUrl() : $url;
}
Нормализует входной параметр, чтобы он стал корректным URL.
Если входной параметр — пустая строка, возвращается текущий URL-запрос.
Если входной параметр — непустая строка, он обрабатывается как корректный URL и возвращается без изменений.
Если входной параметр — массив, он обрабатывается как маршрут контроллера и список параметров GET, и вызывается метод CController::createUrl для создания URL. В этом случае первый элемент массива относится к маршруту контроллера, а остальные пары ключ-значение — к дополнительным параметрам GET для URL. Например, array('post/list', 'page'=>3) может быть использован для генерации URL /index.php?r=post/list&page=3.
numberField() метод (доступен с версии v1.1.14)
public static string numberField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются и некоторые специальные атрибуты (см. clientChange и tag для подробностей). |
| {возвращает} | строка | сгенерированное поле ввода |
public static function numberField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('number',$name,$value,$htmlOptions);
}
Генерирует поле ввода типа число.
См. также
openTag() метод
public static string openTag(string $tag, array $htmlOptions=array ( )) | ||
| $tag | строка | имя тега |
| $htmlOptions | массив | атрибуты элемента. Значения будут закодированы в HTML с помощью encode(). Если задан атрибут 'encode' со значением false, остальные значения атрибутов НЕ будут закодированы в HTML. С версии 1.1.5, атрибуты со значением null не будут отображаться. |
| {возвращает} | строка | сгенерированный тег HTML-элемента |
public static function openTag($tag,$htmlOptions=array())
{
return '<' . $tag . self::renderAttributes($htmlOptions) . '>';
}
Генерирует открытый HTML-элемент.
pageStateField() метод
public static string pageStateField(string $value) | ||
| $value | строка | сохраненные состояния страницы в сериализованном формате |
| {возвращает} | строка | сгенерированное скрытое поле |
public static function pageStateField($value)
{
return '<input type="hidden" name="'.CController::STATE_INPUT_NAME.'" value="'.$value.'" />';
}
Генерирует скрытое поле для хранения постоянных состояний страницы. Этот метод используется внутри statefulForm.
passwordField() метод
public static string passwordField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются и некоторые специальные атрибуты (см. clientChange и tag для подробностей). |
| {возвращает} | строка | сгенерированное поле ввода |
public static function passwordField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('password',$name,$value,$htmlOptions);
}
Генерирует поле ввода для пароля.
См. также
radioButton() метод
public static string radioButton(string $name, boolean $checked=false, array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $checked | логический тип | включен ли радио-кнопка |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются и некоторые специальные атрибуты (см. clientChange и tag для подробностей). С версии 1.1.2 доступен специальный параметр 'uncheckValue', который позволяет указать значение, возвращаемое при снятии галочки с радио-кнопки. В этом случае рендерится скрытое поле, так что при снятии галочки мы можем получить отправленное значение uncheck. Если 'uncheckValue' не задан или равен NULL, скрытое поле не будет рендериться. |
| {возвращает} | строка | сгенерированная радио-кнопка |
public static function radioButton($name,$checked=false,$htmlOptions=array())
{
if($checked)
$htmlOptions['checked']='checked';
else
unset($htmlOptions['checked']);
$value=isset($htmlOptions['value']) ? $htmlOptions['value'] : 1;
self::clientChange('click',$htmlOptions);
if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck=null;
if($uncheck!==null)
{
// add a hidden field so that if the radio button is not selected, it still submits a value
if(isset($htmlOptions['id']) && $htmlOptions['id']!==false)
$uncheckOptions=array('id'=>self::ID_PREFIX.$htmlOptions['id']);
else
$uncheckOptions=array('id'=>false);
if(!empty($htmlOptions['disabled']))
$uncheckOptions['disabled']=$htmlOptions['disabled'];
$hidden=self::hiddenField($name,$uncheck,$uncheckOptions);
}
else
$hidden='';
// add a hidden field so that if the radio button is not selected, it still submits a value
return $hidden . self::inputField('radio',$name,$value,$htmlOptions);
}
Генерирует радио-кнопку.
См. также
radioButtonList() метод
public static string radioButtonList(string $name, string $select, array $data, array $htmlOptions=array ( )) | ||
| $name | string | имя списка радиокнопок. Вы можете использовать это имя для получения выбранного значения (значений) после отправки формы. |
| $select | string | выбор радиокнопок. |
| $data | массив | пары «значение-метка», используемые для создания списка радиокнопок. Обратите внимание, значения будут автоматически закодированы в HTML, а метки — нет. |
| $htmlOptions | массив | дополнительные HTML-параметры. Параметры будут применены к каждому элементу ввода радиокнопки. Признаются следующие специальные параметры:
|
| {return} | строка | сгенерированный список радиокнопок |
public static function radioButtonList($name,$select,$data,$htmlOptions=array())
{
$template=isset($htmlOptions['template'])?$htmlOptions['template']:'{input} {label}';
$separator=isset($htmlOptions['separator'])?$htmlOptions['separator']:self::tag('br');
$container=isset($htmlOptions['container'])?$htmlOptions['container']:'span';
unset($htmlOptions['template'],$htmlOptions['separator'],$htmlOptions['container']);
$labelOptions=isset($htmlOptions['labelOptions'])?$htmlOptions['labelOptions']:array();
unset($htmlOptions['labelOptions']);
if(isset($htmlOptions['empty']))
{
if(!is_array($htmlOptions['empty']))
$htmlOptions['empty']=array(''=>$htmlOptions['empty']);
$data=CMap::mergeArray($htmlOptions['empty'],$data);
unset($htmlOptions['empty']);
}
$items=array();
$baseID=isset($htmlOptions['baseID']) ? $htmlOptions['baseID'] : self::getIdByName($name);
unset($htmlOptions['baseID']);
$id=0;
foreach($data as $value=>$labelTitle)
{
$checked=!strcmp($value,$select);
$htmlOptions['value']=$value;
$htmlOptions['id']=$baseID.'_'.$id++;
$option=self::radioButton($name,$checked,$htmlOptions);
$beginLabel=self::openTag('label',$labelOptions);
$label=self::label($labelTitle,$htmlOptions['id'],$labelOptions);
$endLabel=self::closeTag('label');
$items[]=strtr($template,array(
'{input}'=>$option,
'{beginLabel}'=>$beginLabel,
'{label}'=>$label,
'{labelTitle}'=>$labelTitle,
'{endLabel}'=>$endLabel,
));
}
if(empty($container))
return implode($separator,$items);
else
return self::tag($container,array('id'=>$baseID),implode($separator,$items));
}
Создаёт список радиокнопок. Список радиокнопок похож на список флажков, за исключением того, что он позволяет только один выбор.
rangeField() метод (доступен начиная с v1.1.14)
public static string rangeField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя элемента ввода |
| $value | строка | значение элемента ввода |
| $htmlOptions | массив | дополнительные HTML-атрибуты. Помимо обычных HTML-атрибутов, также распознаются несколько специальных атрибутов (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированное поле ввода |
public static function rangeField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('range',$name,$value,$htmlOptions);
}
Создаёт поле ввода диапазона.
См. также
refresh() метод (доступен начиная с v1.1.1)
public static void refresh(integer $seconds, string $url='') | ||
| $seconds | целое число | количество секунд ожидания перед обновлением страницы |
| $url | строка | URL, на который должна перенаправить страница. Если пусто, означает текущую страницу. |
public static function refresh($seconds,$url='')
{
$content="$seconds";
if($url!=='')
$content.=';url='.self::normalizeUrl($url);
Yii::app()->clientScript->registerMetaTag($content,null,'refresh');
}
Регистрирует мета-тег 'refresh'. Этот метод может быть вызван в любом месте представления. Он зарегистрирует мета-тег 'refresh' в CClientScript, чтобы страница могла быть обновлена через указанное количество секунд.
renderAttributes() метод
public static string renderAttributes(array $htmlOptions) | ||
| $htmlOptions | массив | атрибуты для отрисовки |
| {return} | строка | результат отрисовки |
public static function renderAttributes($htmlOptions)
{
static $specialAttributes=array(
'autofocus'=>1,
'autoplay'=>1,
'async'=>1,
'checked'=>1,
'controls'=>1,
'declare'=>1,
'default'=>1,
'defer'=>1,
'disabled'=>1,
'formnovalidate'=>1,
'hidden'=>1,
'ismap'=>1,
'itemscope'=>1,
'loop'=>1,
'multiple'=>1,
'muted'=>1,
'nohref'=>1,
'noresize'=>1,
'novalidate'=>1,
'open'=>1,
'readonly'=>1,
'required'=>1,
'reversed'=>1,
'scoped'=>1,
'seamless'=>1,
'selected'=>1,
'typemustmatch'=>1,
);
if($htmlOptions===array())
return '';
$html='';
if(isset($htmlOptions['encode']))
{
$raw=!$htmlOptions['encode'];
unset($htmlOptions['encode']);
}
else
$raw=false;
foreach($htmlOptions as $name=>$value)
{
if(isset($specialAttributes[$name]))
{
if($value===false && $name==='async') {
$html .= ' ' . $name.'="false"';
}
elseif($value)
{
$html .= ' ' . $name;
if(self::$renderSpecialAttributesValue)
$html .= '="' . $name . '"';
}
}
elseif($value!==null)
$html .= ' ' . $name . '="' . ($raw ? $value : self::encode($value)) . '"';
}
return $html;
}
Отображает атрибуты тега HTML. Начиная с версии 1.1.5, атрибуты, значение которых равно null, не будут отрисованы. Специальные атрибуты, такие как 'checked', 'disabled', 'readonly', будут правильно отрисованы на основе их соответствующего логического значения.
resetButton() метод
public static string resetButton(string $label='reset', array $htmlOptions=array ( )) | ||
| $label | строка | метка кнопки |
| $htmlOptions | массив | дополнительные HTML-атрибуты. Помимо обычных HTML-атрибутов, распознаются и некоторые специальные атрибуты (подробнее см. clientChange и tag). |
| {return} | строка | сгенерированный тег кнопки |
public static function resetButton($label='reset',$htmlOptions=array())
{
$htmlOptions['type']='reset';
return self::button($label,$htmlOptions);
}
Создаёт кнопку сброса.
См. также
resolveName() метод
public static string resolveName(CModel $model, string &$attribute) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| {return} | строка | имя элемента ввода |
public static function resolveName($model,&$attribute)
{
$modelName=self::modelName($model);
if(($pos=strpos($attribute,'['))!==false)
{
if($pos!==0) // e.g. name[a][b]
return $modelName.'['.substr($attribute,0,$pos).']'.substr($attribute,$pos);
if(($pos=strrpos($attribute,']'))!==false && $pos!==strlen($attribute)-1) // e.g. [a][b]name
{
$sub=substr($attribute,0,$pos+1);
$attribute=substr($attribute,$pos+1);
return $modelName.$sub.'['.$attribute.']';
}
if(preg_match('/\](\w+\[.*)$/',$attribute,$matches))
{
$name=$modelName.'['.str_replace(']','][',trim(strtr($attribute,array(']['=>']','['=>']')),']')).']';
$attribute=$matches[1];
return $name;
}
}
return $modelName.'['.$attribute.']';
}
Создаёт имя элемента ввода для атрибута модели. Обратите внимание, что имя атрибута может быть изменено после вызова этого метода, если имя содержит квадратные скобки (в основном используются в табличных элементах ввода) перед фактическим именем атрибута.
resolveNameID() метод
public static void resolveNameID(CModel $model, string &$attribute, array &$htmlOptions) | ||
| $model | CModel | модель данных |
| $attribute | строка | атрибут |
| $htmlOptions | массив | HTML-параметры |
public static function resolveNameID($model,&$attribute,&$htmlOptions)
{
if(!isset($htmlOptions['name']))
$htmlOptions['name']=self::resolveName($model,$attribute);
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($htmlOptions['name']);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
}
Создаёт имя элемента ввода и ID для атрибута модели. Этот метод обновит HTML-параметры, установив соответствующие атрибуты 'name' и 'id'. Этот метод также может изменить имя атрибута, если имя содержит квадратные скобки (в основном используются в табличных элементах ввода).
resolveValue() метод (доступен начиная с v1.1.3)
public static mixed resolveValue(CModel $model, string $attribute) | ||
| $model | CModel | модель данных |
| $attribute | строка | имя атрибута |
| {return} | смешанный тип | значение атрибута |
public static function resolveValue($model,$attribute)
{
if(($pos=strpos($attribute,'['))!==false)
{
if($pos===0) // [a]name[b][c], should ignore [a]
{
if(preg_match('/\](\w+(\[.+)?)/',$attribute,$matches))
$attribute=$matches[1]; // we get: name[b][c]
if(($pos=strpos($attribute,'['))===false)
return $model->$attribute;
}
$name=substr($attribute,0,$pos);
$value=$model->$name;
foreach(explode('][',rtrim(substr($attribute,$pos+1),']')) as $id)
{
if((is_array($value) || $value instanceof ArrayAccess) && isset($value[$id]))
$value=$value[$id];
else
return null;
}
return $value;
}
else
return $model->$attribute;
}
Оценивает значение атрибута модели. Этот метод может распознать имя атрибута, записанное в формате массива. Например, если имя атрибута 'name[a][b]', будет возвращено значение "$model->name['a']['b']".
script() метод
public static string script(string $text, array $htmlOptions=array ( )) | ||
| $text | строка | JavaScript, который должен быть заключён |
| $htmlOptions | массив | дополнительные HTML-атрибуты (см. tag) |
| {return} | строка | заключённый JavaScript |
public static function script($text,array $htmlOptions=array())
{
$defaultHtmlOptions=array(
'type'=>'text/javascript',
);
$htmlOptions=array_merge($defaultHtmlOptions,$htmlOptions);
return self::tag('script',$htmlOptions,"\n/*<![CDATA[*/\n{$text}\n/*]]>*/\n");
}
Оборачивает указанный JavaScript в тег script.
scriptFile() метод
public static string scriptFile(string $url, array $htmlOptions=array ( )) | ||
| $url | строка | URL файла JavaScript |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. тег) |
| {возврат} | строка | тег файла JavaScript |
public static function scriptFile($url,array $htmlOptions=array())
{
$defaultHtmlOptions=array(
'type'=>'text/javascript',
'src'=>$url
);
$htmlOptions=array_merge($defaultHtmlOptions,$htmlOptions);
return self::tag('script',$htmlOptions,'');
}
Включает файл JavaScript.
searchField() метод (доступен начиная с версии v1.1.16)
public static string searchField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {возврат} | строка | сгенерированное поле ввода |
public static function searchField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('search',$name,$value,$htmlOptions);
}
Генерирует поле ввода для поиска.
См. также
setModelNameConverter() метод (доступен начиная с v1.1.14)
public static void setModelNameConverter(callback|null $converter) | ||
| $converter | обработчик|null | новый генератор; имя модели или класса передается в этот обработчик, и результат должен быть допустимым значением для атрибута имени HTML. |
public static function setModelNameConverter($converter)
{
if(is_callable($converter))
self::$_modelNameConverter=$converter;
elseif($converter===null)
self::$_modelNameConverter=null;
else
throw new CException(Yii::t('yii','The $converter argument must be a valid callback or null.'));
}
Устанавливает генератор, используемый в методе CHtml::modelName(). Можно использовать значение `null` для восстановления значения по умолчанию.
statefulForm() метод
public static string statefulForm(mixed $action='', string $method='post', array $htmlOptions=array ( )) | ||
| $action | смешанный тип | URL действия формы (см. normalizeUrl для получения подробностей об этом параметре.) |
| $method | строка | метод формы (например, post, get) |
| $htmlOptions | массив | дополнительные атрибуты HTML (см. тег). |
| {возврат} | строка | сгенерированный тег формы. |
public static function statefulForm($action='',$method='post',$htmlOptions=array())
{
return self::form($action,$method,$htmlOptions)."\n".
self::tag('div',array('style'=>'display:none'),self::pageStateField(''));
}
Генерирует тег формы с сохранением состояния. Тег формы с сохранением состояния похож на тег form, за исключением того, что он отображает дополнительное скрытое поле для хранения состояния страницы. Вам следует использовать этот метод для генерации тега формы, если вы хотите получить доступ к состоянию страницы, сохраняющемуся при отправке формы.
submitButton() метод
public static string submitButton(string $label='submit', array $htmlOptions=array ( )) | ||
| $label | строка | метка кнопки |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {возврат} | строка | сгенерированный тег кнопки |
public static function submitButton($label='submit',$htmlOptions=array())
{
$htmlOptions['type']='submit';
return self::button($label,$htmlOptions);
}
Генерирует кнопку отправки.
См. также
tag() метод
public static string tag(string $tag, array $htmlOptions=array ( ), mixed $content=false, boolean $closeTag=true) | ||
| $tag | строка | имя тега |
| $htmlOptions | массив | атрибуты элемента. Значения будут закодированы в HTML с помощью encode(). Если задан атрибут 'encode' и его значение равно false, остальные значения атрибутов НЕ будут закодированы в HTML. С версии 1.1.5 атрибуты, значение которых равно null, не будут отображаться. |
| $content | смешанный тип | содержимое, которое будет заключено между открывающим и закрывающим тегами элемента. Оно не будет закодировано в HTML. Если значение равно false, это означает, что содержимого нет. |
| $closeTag | логическое | генерировать ли закрывающий тег. |
| {возврат} | строка | сгенерированный тег HTML-элемента |
public static function tag($tag,$htmlOptions=array(),$content=false,$closeTag=true)
{
$html='<' . $tag . self::renderAttributes($htmlOptions);
if($content===false)
return $closeTag && self::$closeSingleTags ? $html.' />' : $html.'>';
else
return $closeTag ? $html.'>'.$content.'</'.$tag.'>' : $html.'>'.$content;
}
Генерирует HTML-элемент.
telField() метод (доступен начиная с v1.1.14)
public static string telField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {возврат} | строка | сгенерированное поле ввода |
public static function telField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('tel',$name,$value,$htmlOptions);
}
Генерирует поле ввода для номера телефона.
См. также
textArea() метод
public static string textArea(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {возврат} | строка | сгенерированная область ввода текста |
public static function textArea($name,$value='',$htmlOptions=array())
{
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
self::clientChange('change',$htmlOptions);
return self::tag('textarea',$htmlOptions,isset($htmlOptions['encode']) && !$htmlOptions['encode'] ? $value : self::encode($value));
}
Генерирует область ввода текста.
См. также
textField() метод
public static string textField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются также некоторые специальные атрибуты (см. clientChange и тег для получения более подробной информации). |
| {возврат} | строка | сгенерированное поле ввода |
public static function textField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('text',$name,$value,$htmlOptions);
}
Генерирует текстовое поле ввода.
См. также
timeField() метод (доступен начиная с v1.1.14)
public static string timeField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации). |
| {return} | строка | сгенерированное поле ввода |
public static function timeField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('time',$name,$value,$htmlOptions);
}
Генерирует поле ввода времени.
См. также
urlField() метод (доступен начиная с v1.1.14)
public static string urlField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации). |
| {return} | строка | сгенерированное поле ввода |
public static function urlField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('url',$name,$value,$htmlOptions);
}
Генерирует поле ввода URL.
См. также
value() метод
public static mixed value(mixed $model, mixed $attribute, mixed $defaultValue=NULL) | ||
| $model | смешанный тип | модель. Может быть объектом или массивом. |
| $attribute | смешанный тип | имя атрибута (используйте точку для объединения нескольких атрибутов) или анонимную функцию (PHP 5.3+). Помните, что функции, созданные с помощью «create_function», не поддерживаются этим методом. Также обратите внимание, что числовое значение не имеет смысла, когда первый параметр имеет тип объекта. |
| $defaultValue | смешанный тип | значение по умолчанию, которое возвращается, если атрибут не существует. |
| {return} | смешанный тип | значение атрибута. |
public static function value($model,$attribute,$defaultValue=null)
{
if(is_scalar($attribute) || $attribute===null)
foreach(explode('.',$attribute) as $name)
{
if(is_object($model) && isset($model->$name))
$model=$model->$name;
elseif(is_array($model) && isset($model[$name]))
$model=$model[$name];
else
return $defaultValue;
}
else
return call_user_func($attribute,$model);
return $model;
}
Вычисляет значение указанного атрибута для данной модели. Имя атрибута может быть задано в формате с точкой. Например, если атрибут «author.firstName», этот метод вернет значение «$model->author->firstName». Значение по умолчанию (переданное в качестве последнего параметра) будет возвращено, если атрибут не существует или прерван (например, $model->author равен null). Модель может быть объектом или массивом. Если это массив, атрибут обрабатывается как ключ массива. Например, для «author.firstName» это будет означать значение массива «$model['author']['firstName']».
Анонимная функция также может использоваться для вычисления атрибута начиная с версии 1.1.13 ($параметр attribute; только PHP 5.3+) следующим образом:
$taskClosedSecondsAgo=CHtml::value($closedTask,function($model) {
return time()-$model->closed_at;
});
Ваша анонимная функция должна принимать один аргумент, который является моделью, текущее значение рассчитывается от. Эта функция может использоваться вместе с listData. Обратитесь к документации для получения дополнительной информации. weekField() метод (доступен начиная с v1.1.16)
public static string weekField(string $name, string $value='', array $htmlOptions=array ( )) | ||
| $name | строка | имя поля ввода |
| $value | строка | значение поля ввода |
| $htmlOptions | массив | дополнительные атрибуты HTML. Помимо обычных атрибутов HTML, распознаются некоторые специальные атрибуты (см. clientChange и tag для получения более подробной информации). |
| {return} | строка | сгенерированное поле ввода |
public static function weekField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
return self::inputField('week',$name,$value,$htmlOptions);
}
Генерирует поле ввода недели.
См. также
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CHtml