Spec-Zone.ru › Yii 1.1

CActiveForm

Пакет system.web.widgets
Наследование class CActiveForm » CWidget » CBaseController » CComponent
Подклассы CCodeForm
С момента 1.1.1
Исходный код framework/web/widgets/CActiveForm.php
CActiveForm предоставляет набор методов, которые помогают упростить создание сложных и интерактивных HTML-форм, связанных с моделями данных.

Вызов методов 'beginWidget' и 'endWidget' виджета CActiveForm рендерит открывающий и закрывающий теги формы. Большинство других методов CActiveForm являются обёртками соответствующих методов 'active' в CHtml. Вызов этих методов между 'beginWidget' и 'endWidget' рендерит метки, поля ввода и т. д. Например, вызов CActiveForm::textField сгенерирует поле ввода для указанного атрибута модели.

То, что делает CActiveForm чрезвычайно полезным, — это поддержка проверки данных. CActiveForm поддерживает проверку данных на трёх уровнях:
  • Проверка на стороне сервера: проверка выполняется на стороне сервера после отправки всей страницы с формой. Если есть ошибка проверки, CActiveForm отобразит ошибку на странице для пользователя.
  • Проверка на основе AJAX: когда пользователь вводит данные в поле ввода, запускается запрос AJAX, который требует проверки на стороне сервера. Результат проверки отправляется обратно в ответ AJAX, и поле ввода соответствующим образом изменяет свой вид.
  • Проверка на стороне клиента (доступна начиная с версии 1.1.7): когда пользователь вводит данные в поле ввода, проверка выполняется на стороне клиента с помощью JavaScript. Обращения к серверу не происходит, что уменьшает нагрузку на сервер.


Все эти проверки используют один и тот же набор правил проверки, объявленных в связанном классе модели. CActiveForm разработан таким образом, что все эти проверки приведут к одинаковым изменениям пользовательского интерфейса и содержанию сообщений об ошибках.

Для обеспечения достоверности данных всегда выполняется проверка на стороне сервера. Установив enableAjaxValidation в значение true, можно включить проверку на основе AJAX; а установив enableClientValidation в значение true, можно включить проверку на стороне клиента. Обратите внимание, что для работы последних двух проверок браузер пользователя должен иметь включён JavaScript. В противном случае будет выполняться только проверка на стороне сервера.

Проверки на основе AJAX и на стороне клиента могут использоваться вместе или по отдельности. Например, в форме регистрации пользователя можно использовать проверку на основе AJAX для проверки уникальности выбранного имени пользователя и проверку на стороне клиента для обеспечения ввода данных во все необходимые поля. Поскольку проверка на основе AJAX может увеличивать нагрузку на сервер, по возможности следует преимущественно использовать проверку на стороне клиента.

Проверка на основе AJAX имеет некоторые ограничения. Во-первых, она не работает с полями загрузки файлов. Во-вторых, её не следует использовать для выполнения проверок, которые могут вызвать изменения состояния на стороне сервера. В-третьих, она не предназначена для работы с табличными данными ввода на данный момент.

Поддержка проверки на стороне клиента варьируется для разных валидаторов. Валидатор будет поддерживать проверку на стороне клиента только в том случае, если он реализует CValidator::clientValidateAttribute и имеет свойство CValidator::enableClientValidation установлено в значение true. В настоящее время следующие валидаторы ядра поддерживают проверку на стороне клиента:
  • CBooleanValidator
  • CCaptchaValidator
  • CCompareValidator
  • CEmailValidator
  • CNumberValidator
  • CRangeValidator
  • CRegularExpressionValidator
  • CRequiredValidator
  • CStringValidator
  • CUrlValidator


CActiveForm полагается на CSS для настройки внешнего вида полей ввода, которые находятся в различных состояниях проверки. В частности, каждое поле ввода может находиться в одном из четырёх состояний: начальное (не проверенное), проверка, ошибка и успех. Для различения этих состояний CActiveForm автоматически назначает различные CSS-классы для последних трёх состояний HTML-элементу, содержащему поле ввода. По умолчанию эти CSS-классы называются 'validating', 'error' и 'success' соответственно. Мы можем настроить эти CSS-классы, настроив свойство clientOptions или указав их в методе error.

Ниже приведён пример кода представления, показывающий, как использовать CActiveForm:

<?php $form = $this->beginWidget('CActiveForm', array(
    'id'=>'user-form',
    'enableAjaxValidation'=>true,
    'enableClientValidation'=>true,
    'focus'=>array($model,'firstName'),
)); ?>

<?php echo $form->errorSummary($model); ?>

<div class="row">
    <?php echo $form->labelEx($model,'firstName'); ?>
    <?php echo $form->textField($model,'firstName'); ?>
    <?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
    <?php echo $form->labelEx($model,'lastName'); ?>
    <?php echo $form->textField($model,'lastName'); ?>
    <?php echo $form->error($model,'lastName'); ?>
</div>

<?php $this->endWidget(); ?>


Для ответа на запросы AJAX-валидации нам нужен следующий код класса:
public function actionCreate()
{
    $model=new User;
    $this->performAjaxValidation($model);
    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];
        if($model->save())
            $this->redirect('index');
    }
    $this->render('create',array('model'=>$model));
}

protected function performAjaxValidation($model)
{
    if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}


В приведенном выше коде, если мы не включили AJAX-валидацию, мы можем удалить метод performAjaxValidation и его вызов.

Общественные свойства

Свойство Тип Описание Определено
action смешанный URL действия формы (см. CHtml::normalizeUrl для подробностей об этом параметре). CActiveForm
actionPrefix строка Префикс к идентификаторам действий. CWidget
clientOptions массив Параметры, передаваемые в плагин валидации javascript. CActiveForm
controller CController Возвращает контроллер, к которому принадлежит этот виджет. CWidget
enableAjaxValidation булево Включает проверку данных через AJAX. CActiveForm
enableClientValidation булево Включает проверку данных на стороне клиента. CActiveForm
errorMessageCssClass строка Имя CSS-класса для сообщений об ошибках. CActiveForm
focus смешанный Элемент формы, который получит фокус при загрузке страницы. CActiveForm
htmlOptions массив Дополнительные атрибуты HTML, которые должны быть рендерированы для тега формы. CActiveForm
id строка Возвращает идентификатор виджета или генерирует новый, если это необходимо. CWidget
method строка Метод отправки формы. CActiveForm
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
skin смешанный Имя скина, используемого этим виджетом. CWidget
stateful булево Указывает, нужно ли создавать состянную форму (См. CHtml::statefulForm). CActiveForm
viewPath строка Возвращает каталог, содержащий файлы представления для этого виджета. CWidget

Защищённые свойства

Свойство Тип Описание Определено
attributes массив параметры javascript для атрибутов модели (ID ввода => параметры) CActiveForm
summaryID строка Идентификатор контейнера для сводки ошибок CActiveForm

Общественные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
actions() Возвращает список действий, используемых этим виджетом. CWidget
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
beginCache() Начинает кэширование фрагмента. CBaseController
beginClip() Начинает запись клипа. CBaseController
beginContent() Начинает отображение содержимого, которое будет оформлено заданным представлением. CBaseController
beginWidget() Создаёт виджет и выполняет его. CBaseController
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
checkBox() Отображает флажок для атрибута модели. CActiveForm
checkBoxList() Отображает список флажков для атрибута модели. CActiveForm
colorField() Отображает поле выбора цвета для атрибута модели. CActiveForm
createWidget() Создаёт виджет и инициализирует его. CBaseController
dateField() Отображает поле даты для атрибута модели. CActiveForm
dateTimeField() Отображает поле даты и времени для атрибута модели. CActiveForm
dateTimeLocalField() Отображает поле локальной даты и времени для атрибута модели. CActiveForm
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикреплённое поведение. CComponent
disableBehaviors() Отключает все прикрепленные поведения этого компонента. CComponent
dropDownList() Отображает раскрывающийся список для атрибута модели. CActiveForm
emailField() Отображает поле ввода адреса электронной почты для атрибута модели. CActiveForm
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные поведения. CComponent
endCache() Завершает кэширование фрагмента. CBaseController
endClip() Завершает запись клипа. CBaseController
endContent() Завершает отображение содержимого. CBaseController
endWidget() Завершает выполнение указанного виджета. CBaseController
error() Отображает первое сообщение об ошибке валидации для атрибута модели. CActiveForm
errorSummary() Отображает сводку сообщений об ошибках валидации для одной или нескольких моделей. CActiveForm
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
fileField() Отображает поле для файла для атрибута модели. CActiveForm
getController() Возвращает контроллер, к которому принадлежит этот виджет. CWidget
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getId() Возвращает идентификатор виджета или генерирует новый, если это необходимо. CWidget
getOwner() Возвращает владельца/создателя этого виджета. CWidget
getViewFile() Ищет файл сценария представления по имени представления. CWidget
getViewPath() Возвращает каталог, содержащий файлы представления для этого виджета. CWidget
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикрепленные обработчики для указанного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
hiddenField() Отображает скрытое поле для атрибута модели. CActiveForm
init() Инициализирует виджет. CActiveForm
label() Отображает HTML-метку для атрибута модели. CActiveForm
labelEx() Отображает HTML-метку для атрибута модели. CActiveForm
listBox() Отображает выпадающий список для атрибута модели. CActiveForm
numberField() Отображает поле ввода числа для атрибута модели. CActiveForm
passwordField() Отображает поле ввода пароля для атрибута модели. CActiveForm
radioButton() Отображает радиокнопку для атрибута модели. CActiveForm
radioButtonList() Отображает список радиокнопок для атрибута модели. CActiveForm
raiseEvent() Вызывает событие. CComponent
rangeField() Создаёт поле диапазона для атрибута модели. CActiveForm
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Выполняет виджет. CActiveForm
searchField() Отображает поле поиска для атрибута модели. CActiveForm
setId() Устанавливает идентификатор виджета. CWidget
telField() Отображает поле tel для атрибута модели. CActiveForm
textArea() Отображает текстовую область для атрибута модели. CActiveForm
textField() Отображает текстовое поле для атрибута модели. CActiveForm
timeField() Отображает поле времени для атрибута модели. CActiveForm
urlField() Отображает поле url для атрибута модели. CActiveForm
validate() Проверяет одну или несколько моделей и возвращает результаты в формате JSON. CActiveForm
validateTabular() Проверяет массив экземпляров моделей и возвращает результаты в формате JSON. CActiveForm
weekField() Отображает поле недели для атрибута модели. CActiveForm
widget() Создаёт виджет и выполняет его. CBaseController

Подробное описание свойств

action свойство

public mixed $action;

URL действия формы (см. CHtml::normalizeUrl для подробностей об этом параметре). Если не задано, используется текущий URL страницы.

attributes свойство (доступно с версии 1.1.7)

protected array $attributes;

опции javascript для атрибутов модели (ID ввода => опции)

См. также

  • error

clientOptions свойство

public array $clientOptions;

опции, которые будут переданы в плагин проверки javascript. Поддерживаются следующие опции:

  • ajaxVar: строка, имя параметра, указывающего, что запрос является AJAX-запросом. При активации проверки AJAX, параметр с этим именем будет отправлен вместе с другими данными формы на сервер. Значение параметра — ID формы. Серверная сторона может затем определить, кто инициировал AJAX-валидацию и отреагировать соответствующим образом. По умолчанию 'ajax'.
  • validationUrl: строка, URL, который выполняет AJAX-валидацию. Если не задано, примет значение action.
  • validationDelay: целое число, количество миллисекунд, на которое должна быть отложена AJAX-валидация после изменения ввода. Значение 0 означает, что валидация будет выполнена немедленно при изменении ввода. Значение больше 0 означает, что изменение нескольких вводов может инициировать только одну валидацию, если они произойдут достаточно быстро, что может помочь уменьшить нагрузку на сервер. По умолчанию 200 (0,2 секунды).
  • validateOnSubmit: логическое значение, указывает, нужно ли выполнять AJAX-валидацию при отправке формы. Если есть ошибки валидации, отправка формы будет остановлена. По умолчанию false.
  • validateOnChange: логическое значение, указывает, нужно ли запускать AJAX-валидацию каждый раз, когда меняется значение ввода. Вы можете отключить это, если это оказывает слишком большое влияние на производительность, так как каждый AJAX-запрос валидации будет отправлять данные всей формы. По умолчанию true.
  • validateOnType: логическое значение, указывает, нужно ли запускать AJAX-валидацию каждый раз, когда пользователь нажимает клавишу. Если вы установите это свойство в true, вам следует настроить опцию 'validationDelay', чтобы избежать запуска слишком многих AJAX-валидаций. По умолчанию false.
  • hideErrorMessage: логическое значение, указывать, нужно ли скрывать сообщение об ошибке, даже если есть ошибка. По умолчанию false, что означает, что сообщение об ошибке появится всякий раз, когда у ввода есть ошибка.
  • inputContainer: строка, селектор jQuery для HTML-элемента, содержащего поле ввода. Во время процесса валидации CActiveForm установит разные CSS-классы для элемента контейнера, чтобы указать изменение состояния. Если не задано, это означает ближайший элемент 'div', содержащий поле ввода.
  • errorCssClass: строка, CSS-класс, который будет назначен контейнеру, связанному с вводом, имеющим ошибку AJAX-валидации. По умолчанию 'error'.
  • successCssClass: строка, CSS-класс, который будет назначен контейнеру, связанному с вводом, прошедшим AJAX-валидацию без ошибок. По умолчанию 'success'.
  • validatingCssClass: строка, CSS-класс, который будет назначен контейнеру, связанному с вводом, который в данный момент проходит AJAX-валидацию. По умолчанию 'validating'.
  • errorMessageCssClass: строка, CSS-класс, назначенный сообщениям об ошибках, возвращенным AJAX-валидацией. По умолчанию 'errorMessage'.
  • beforeValidate: функция, которая будет вызвана перед выполнением AJAX-валидации, инициированной действием отправки формы (доступна только при validateOnSubmit установлено в true). Ожидаемая сигнатура функции должна быть beforeValidate(form) {...}, где 'form' — jquery-представление объекта формы. Если возвращаемое значение этой функции НЕ true, валидация будет отменена.

    Обратите внимание, что поскольку эта опция относится к js-функции, вам следует обернуть значение с помощью CJavaScriptExpression, чтобы предотвратить его кодирование как строку. Эта опция доступна с версии 1.1.3.
  • afterValidate: функция, которая будет вызвана после выполнения AJAX-валидации, инициированной действием отправки формы (доступна только при validateOnSubmit установлено в true). Ожидаемая сигнатура функции должна быть afterValidate(form, data, hasError) {...}, где 'form' — jquery-представление объекта формы; 'data' — JSON-ответ от серверной валидации; 'hasError' — логическое значение, указывающее, есть ли какие-либо ошибки валидации. Если возвращаемое значение этой функции НЕ true, обычная отправка формы будет отменена.

    Обратите внимание, что поскольку эта опция относится к js-функции, вам следует обернуть значение с помощью CJavaScriptExpression, чтобы предотвратить его кодирование как строку. Эта опция доступна с версии 1.1.3.
  • beforeValidateAttribute: функция, которая будет вызвана перед выполнением AJAX-валидации, инициированной изменением ввода одного атрибута. Ожидаемая сигнатура функции должна быть beforeValidateAttribute(form, attribute) {...}, где 'form' — jquery-представление объекта формы, а 'attribute' относится к js-опциям для триггерного атрибута (см. error). Если возвращаемое значение этой функции НЕ true, валидация будет отменена.

    Обратите внимание, что поскольку эта опция относится к js-функции, вам следует обернуть значение с помощью CJavaScriptExpression, чтобы предотвратить его кодирование как строку. Эта опция доступна с версии 1.1.3.
  • afterValidateAttribute: функция, которая будет вызвана после выполнения AJAX-валидации, инициированной изменением ввода одного атрибута. Ожидаемая сигнатура функции должна быть afterValidateAttribute(form, attribute, data, hasError) {...}, где 'form' — jquery-представление объекта формы; 'attribute' относится к js-опциям для триггерного атрибута (см. error); 'data' — JSON-ответ от серверной валидации; 'hasError' — логическое значение, указывающее, есть ли какие-либо ошибки валидации.

    Обратите внимание, что поскольку эта опция относится к js-функции, вам следует обернуть значение с помощью CJavaScriptExpression, чтобы предотвратить его кодирование как строку. Эта опция доступна с версии 1.1.3.


Некоторые из вышеперечисленных опций могут быть переопределены в отдельных вызовах error(). К ним относятся: validationDelay, validateOnChange, validateOnType, hideErrorMessage, inputContainer, errorCssClass, successCssClass, validatingCssClass, beforeValidateAttribute, afterValidateAttribute.

enableAjaxValidation свойство

public boolean $enableAjaxValidation;

указать, нужно ли включать валидацию данных через AJAX. По умолчанию false. Когда это свойство установлено в true, вам следует отвечать на AJAX-запрос валидации на стороне сервера, как показано ниже:

public function actionCreate()
{
    $model=new User;
    if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
    ......
}

enableClientValidation свойство (доступно с версии 1.1.7)

public boolean $enableClientValidation;

указать, нужно ли включать проверку данных на стороне клиента. По умолчанию false.

Когда это свойство установлено в true, проверка на стороне клиента будет выполняться валидаторами, которые её поддерживают (см. CValidator::enableClientValidation и CValidator::clientValidateAttribute).

См. также

  • error

errorMessageCssClass свойство

public string $errorMessageCssClass;

имя CSS-класса для сообщений об ошибках. Начиная с 1.1.14, по умолчанию 'errorMessage', определённый в CHtml::$errorMessageCss. Отдельный вызов error может переопределить это значение, указав HTML-опцию 'class'.

focus свойство (доступно с версии 1.1.4)

public mixed $focus;

Элемент формы для получения начального фокуса на вводе при загрузке страницы.

По умолчанию равен null, что означает, что ни одно поле ввода не имеет фокуса. Если задано как массив, первый элемент должен быть моделью, а второй — атрибутом. Если задано как строка, можно использовать любой селектор jQuery

Пример — установить фокус на поле ввода при загрузке страницы:

  • 'focus'=>array($model,'username') - поле ввода $model->username
  • 'focus'=>'#'.CHtml::activeId($model,'username') - поле ввода $model->username
  • 'focus'=>'#LoginForm_username' - поле ввода с ID LoginForm_username
  • 'focus'=>'input[type="text"]:first' - первое поле ввода типа текст
  • 'focus'=>'input:visible:enabled:first' - первое видимое и активное поле ввода
  • 'focus'=>'input:text[value=""]:first' - первое пустое поле ввода

htmlOptions свойство

public array $htmlOptions;

дополнительные атрибуты HTML, которые должны быть отображены для тега формы.

method свойство

public string $method;

метод отправки формы. Должен быть либо 'post', либо 'get'. По умолчанию 'post'.

stateful свойство

public boolean $stateful;

должна ли быть сгенерирована состояниевая форма (см. CHtml::statefulForm). По умолчанию false.

summaryID свойство (доступно начиная с v1.1.7)

protected string $summaryID;

ID контейнерного элемента для сводки ошибок

См. также

  • errorSummary

Подробное описание методов

checkBox() метод

public string checkBox(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные атрибуты HTML.
{return} строка сгенерированный флажок
Исходный код: framework/web/widgets/CActiveForm.php#896 (показать)
public function checkBox($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeCheckBox($model,$attribute,$htmlOptions);
}

Отображает флажок для атрибута модели. Этот метод является оболочкой CHtml::activeCheckBox. Для получения подробной информации о параметрах этого метода, пожалуйста, обратитесь к CHtml::activeCheckBox.

checkBoxList() метод

public string checkBoxList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$data массив пары значение-метка, используемые для генерации списка флажков.
$htmlOptions массив дополнительные параметры HTML.
{return} строка сгенерированный список флажков
Исходный код: framework/web/widgets/CActiveForm.php#944 (показать)
public function checkBoxList($model,$attribute,$data,$htmlOptions=array())
{
    return 
CHtml::activeCheckBoxList($model,$attribute,$data,$htmlOptions);
}

Отображает список флажков для атрибута модели. Этот метод является обёрткой для CHtml::activeCheckBoxList. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeCheckBoxList.

colorField() метод (доступен начиная с версии v1.1.16)

public string colorField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные HTML-атрибуты.
{return} строка сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#759 (показать)
public function colorField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeColorField($model,$attribute,$htmlOptions);
}

Отображает поле выбора цвета для атрибута модели. Этот метод является обёрткой для CHtml::activeColorField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeColorField.

dateField() метод (доступен начиная с версии v1.1.11)

public string dateField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные HTML-атрибуты.
{return} строка сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#678 (показать)
public function dateField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeDateField($model,$attribute,$htmlOptions);
}

Отображает поле даты для атрибута модели. Этот метод является обёрткой для CHtml::activeDateField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeDateField.

dateTimeField() метод (доступен начиная с версии v1.1.16)

public string dateTimeField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные HTML-атрибуты.
{return} строка сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#711 (показать)
public function dateTimeField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeDateTimeField($model,$attribute,$htmlOptions);
}

Отображает поле даты и времени для атрибута модели. Этот метод является обёрткой для CHtml::activeDateTimeField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeDateTimeField.

dateTimeLocalField() метод (доступен начиная с версии v1.1.16)

public string dateTimeLocalField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные HTML-атрибуты.
{return} строка сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#727 (показать)
public function dateTimeLocalField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeDateTimeLocalField($model,$attribute,$htmlOptions);
}

Отображает локальное поле даты и времени для атрибута модели. Этот метод является обёрткой для CHtml::activeDateTimeLocalField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeDateTimeLocalField.

dropDownList() метод

public string dropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$data массив данные для генерации элементов списка (значение=>отображение)
$htmlOptions массив дополнительные HTML-атрибуты.
{return} строка сгенерированный выпадающий список
Исходный код: framework/web/widgets/CActiveForm.php#912 (показать)
public function dropDownList($model,$attribute,$data,$htmlOptions=array())
{
    return 
CHtml::activeDropDownList($model,$attribute,$data,$htmlOptions);
}

Отображает выпадающий список для атрибута модели. Этот метод является обёрткой для CHtml::activeDropDownList. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeDropDownList.

emailField() метод (доступен начиная с версии v1.1.11)

public string emailField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные атрибуты HTML.
{return} строка сгенерированное поле ввода
Source Code: framework/web/widgets/CActiveForm.php#630 (show)
public function emailField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeEmailField($model,$attribute,$htmlOptions);
}

Отображает поле для ввода электронной почты для атрибута модели. Этот метод является оболочкой для CHtml::activeEmailField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeEmailField.

error() метод

public string error(CModel $model, string $attribute, array $htmlOptions=array ( ), boolean $enableAjaxValidation=true, boolean $enableClientValidation=true)
$model CModel модель данных
$attribute строка имя атрибута
$htmlOptions массив дополнительные атрибуты HTML, которые будут отображаться в контейнере div. Помимо всех тех опций, доступных в CHtml::error, дополнительно распознаются следующие опции:
  • validationDelay
  • validateOnChange
  • validateOnType
  • hideErrorMessage
  • inputContainer
  • errorCssClass
  • successCssClass
  • validatingCssClass
  • beforeValidateAttribute
  • afterValidateAttribute
Эти опции переопределяют соответствующие опции, объявленные в опциях для данного атрибута модели. Более подробную информацию об этих опциях см. в clientOptions. Обратите внимание, что эти опции используются только тогда, когда enableAjaxValidation или enableClientValidation установлены в true.
  • inputID
Когда поле ввода CActiveForm использует пользовательский идентификатор, для правильной работы ajax/клиентской валидации inputID должен быть установлен на тот же идентификатор

Пример:
<div class="form-element">
   <?php echo $form->labelEx($model,'attribute'); ?>
   <?php echo $form->textField($model,'attribute', array('id'=>'custom-id')); ?>
   <?php echo $form->error($model,'attribute',array('inputID'=>'custom-id')); ?>
</div>


При включенной клиентской валидации также распознается опция с именем "clientValidation". Эта опция должна содержать фрагмент JavaScript-кода для выполнения клиентской валидации. В коде заранее определены переменные:
  • value: текущее значение ввода, связанное с этим атрибутом.
  • messages: массив, который может быть дополнен новыми сообщениями об ошибках для атрибута.
  • attribute: структура данных, содержащая все клиентские параметры для атрибута
Это НЕ должно быть функцией, а просто код, Yii заключит предоставленный вами код внутри фактической JS-функции.
$enableAjaxValidation boolean включить AJAX-валидацию для указанного атрибута. Обратите внимание, что для включения AJAX-валидации оба параметра enableAjaxValidation и этот параметр должны быть true.
$enableClientValidation boolean включить клиентскую валидацию для указанного атрибута. Обратите внимание, что для включения клиентской валидации оба параметра enableClientValidation и этот параметр должны быть true. Этот параметр доступен с версии 1.1.7.
{return} строка результат валидации (отображение ошибки или сообщение об успехе).
Source Code: framework/web/widgets/CActiveForm.php#444 (show)
public function error($model,$attribute,$htmlOptions=array(),$enableAjaxValidation=true,$enableClientValidation=true)
{
    if(!
$this->enableAjaxValidation)
        
$enableAjaxValidation=false;
    if(!
$this->enableClientValidation)
        
$enableClientValidation=false;

    if(!isset(
$htmlOptions['class']))
        
$htmlOptions['class']=$this->errorMessageCssClass;

    if(!
$enableAjaxValidation && !$enableClientValidation)
        return 
CHtml::error($model,$attribute,$htmlOptions);

    
$id=CHtml::activeId($model,$attribute);
    
$inputID=isset($htmlOptions['inputID']) ? $htmlOptions['inputID'] : $id;
    unset(
$htmlOptions['inputID']);
    if(!isset(
$htmlOptions['id']))
        
$htmlOptions['id']=$inputID.'_em_';

    
$option=array(
        
'id'=>$id,
        
'inputID'=>$inputID,
        
'errorID'=>$htmlOptions['id'],
        
'model'=>get_class($model),
        
'name'=>$attribute,
        
'enableAjaxValidation'=>$enableAjaxValidation,
    );

    
$optionNames=array(
        
'validationDelay',
        
'validateOnChange',
        
'validateOnType',
        
'hideErrorMessage',
        
'inputContainer',
        
'errorCssClass',
        
'successCssClass',
        
'validatingCssClass',
        
'beforeValidateAttribute',
        
'afterValidateAttribute',
    );
    foreach(
$optionNames as $name)
    {
        if(isset(
$htmlOptions[$name]))
        {
            
$option[$name]=$htmlOptions[$name];
            unset(
$htmlOptions[$name]);
        }
    }
    if(
$model instanceof CActiveRecord && !$model->isNewRecord)
        
$option['status']=1;

    if(
$enableClientValidation)
    {
        
$validators=isset($htmlOptions['clientValidation']) ? array($htmlOptions['clientValidation']) : array();
        unset(
$htmlOptions['clientValidation']);

        
$attributeName = $attribute;
        if((
$pos=strrpos($attribute,']'))!==false && $pos!==strlen($attribute)-1) // e.g. [a]name
        
{
            
$attributeName=substr($attribute,$pos+1);
        }

        foreach(
$model->getValidators($attributeName) as $validator)
        {
            if(
$validator->enableClientValidation)
            {
                if((
$js=$validator->clientValidateAttribute($model,$attributeName))!='')
                    
$validators[]=$js;
            }
        }
        if(
$validators!==array())
            
$option['clientValidation']=new CJavaScriptExpression("function(value, messages, attribute) {\n".implode("\n",$validators)."\n}");
    }

    if(empty(
$option['hideErrorMessage']) && empty($this->clientOptions['hideErrorMessage']))
        
$html=CHtml::error($model,$attribute,$htmlOptions);
    else
        
$html='';
    if(
$html==='')
    {
        if(isset(
$htmlOptions['style']))
            
$htmlOptions['style']=rtrim($htmlOptions['style'],';').';display:none';
        else
            
$htmlOptions['style']='display:none';
        
$html=CHtml::tag(CHtml::$errorContainerTag,$htmlOptions,'');
    }

    
$this->attributes[$inputID]=$option;
    return 
$html;
}

Отображает первую ошибку валидации для атрибута модели. Это аналогично CHtml::error, за исключением того, что оно регистрирует атрибут модели, так что если его значение изменяется пользователем, может быть инициирована AJAX-валидация.

См. также

  • CHtml::error

errorSummary() метод

public string errorSummary(mixed $models, string $header=NULL, string $footer=NULL, array $htmlOptions=array ( ))
$models смешанный тип модели, ошибки ввода которых необходимо отобразить. Это может быть либо одна модель, либо массив моделей.
$header строка фрагмент HTML-кода, который отображается перед ошибками
$footer строка фрагмент HTML-кода, который отображается в конце ошибок
$htmlOptions массив дополнительные атрибуты HTML, которые будут отображаться в контейнере div.
{return} строка сводка ошибок. Пустая, если ошибки не найдены.
Source Code: framework/web/widgets/CActiveForm.php#547 (show)
public function errorSummary($models,$header=null,$footer=null,$htmlOptions=array())
{
    if(!
$this->enableAjaxValidation && !$this->enableClientValidation)
        return 
CHtml::errorSummary($models,$header,$footer,$htmlOptions);

    if(!isset(
$htmlOptions['id']))
        
$htmlOptions['id']=$this->id.'_es_';
    
$html=CHtml::errorSummary($models,$header,$footer,$htmlOptions);
    if(
$html==='')
    {
        if(
$header===null)
            
$header='<p>'.Yii::t('yii','Please fix the following input errors:').'</p>';
        if(!isset(
$htmlOptions['class']))
            
$htmlOptions['class']=CHtml::$errorSummaryCss;
        
$htmlOptions['style']=isset($htmlOptions['style']) ? rtrim($htmlOptions['style'],';').';display:none' : 'display:none';
        
$html=CHtml::tag('div',$htmlOptions,$header."\n<ul><li>dummy</li></ul>".$footer);
    }

    
$this->summaryID=$htmlOptions['id'];
    foreach(
is_array($models) ? $models : array($models) as $model)
        foreach(
$model->getSafeAttributeNames() as $attribute)
            
$this->_summaryAttributes[]=CHtml::activeId($model,$attribute);

    return 
$html;
}

Отображает сводку ошибок валидации для одной или нескольких моделей. Этот метод очень похож на CHtml::errorSummary, за исключением того, что он также работает при выполнении AJAX-валидации.

См. также

  • CHtml::errorSummary

fileField() метод

public string fileField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные атрибуты HTML
{return} строка сгенерированное поле ввода
Source Code: framework/web/widgets/CActiveForm.php#866 (show)
public function fileField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeFileField($model,$attribute,$htmlOptions);
}

Отображает поле для ввода файла для атрибута модели. Этот метод является оболочкой для CHtml::activeFileField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeFileField.

hiddenField() метод

public string hiddenField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные атрибуты HTML.
{return} строка сгенерированное поле ввода
Source Code: framework/web/widgets/CActiveForm.php#821 (show)
public function hiddenField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeHiddenField($model,$attribute,$htmlOptions);
}

Отображает скрытое поле для атрибута модели. Этот метод является оболочкой для CHtml::activeHiddenField. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeHiddenField.

init() метод

public void init()
Source Code: framework/web/widgets/CActiveForm.php#323 (show)
public function init()
{
    if(!isset(
$this->htmlOptions['id']))
        
$this->htmlOptions['id']=$this->id;
    else
        
$this->id=$this->htmlOptions['id'];

    if(
$this->stateful)
        echo 
CHtml::statefulForm($this->action, $this->method, $this->htmlOptions);
    else
        echo 
CHtml::beginForm($this->action, $this->method, $this->htmlOptions);

    if(
$this->errorMessageCssClass===null)
        
$this->errorMessageCssClass=CHtml::$errorMessageCss;
}

Инициализирует виджет. Это отображает открывающий тег формы.

label() метод

public string label(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute строка атрибут
$htmlOptions массив дополнительные атрибуты HTML.
{return} строка сгенерированный тег метки
Source Code: framework/web/widgets/CActiveForm.php#583 (show)
public function label($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeLabel($model,$attribute,$htmlOptions);
}

Отображает HTML-метку для атрибута модели. Этот метод является оболочкой для CHtml::activeLabel. Для получения подробной информации о параметрах этого метода обратитесь к CHtml::activeLabel.

labelEx() метод

public string labelEx(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенеченный тег метки
Исходный код: framework/web/widgets/CActiveForm.php#598 (показать)
public function labelEx($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeLabelEx($model,$attribute,$htmlOptions);
}

Отображает HTML-метку для атрибута модели. Этот метод является оберткой для CHtml::activeLabelEx. Пожалуйста, обратитесь к CHtml::activeLabelEx за подробной информацией о параметрах этого метода.

listBox() метод

public string listBox(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$data array данные для генерации списка опций (значение=>отображение)
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированный список
Исходный код: framework/web/widgets/CActiveForm.php#928 (показать)
public function listBox($model,$attribute,$data,$htmlOptions=array())
{
    return 
CHtml::activeListBox($model,$attribute,$data,$htmlOptions);
}

Отображает список для атрибута модели. Этот метод является оберткой для CHtml::activeListBox. Пожалуйста, обратитесь к CHtml::activeListBox за подробной информацией о параметрах этого метода.

numberField() метод (доступен начиная с v1.1.11)

public string numberField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерованное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#646 (показать)
public function numberField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeNumberField($model,$attribute,$htmlOptions);
}

Отображает поле ввода числа для атрибута модели. Этот метод является оберткой для CHtml::activeNumberField. Пожалуйста, обратитесь к CHtml::activeNumberField за подробной информацией о параметрах этого метода.

passwordField() метод

public string passwordField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерованное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#836 (показать)
public function passwordField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activePasswordField($model,$attribute,$htmlOptions);
}

Отображает поле ввода пароля для атрибута модели. Этот метод является оберткой для CHtml::activePasswordField. Пожалуйста, обратитесь к CHtml::activePasswordField за подробной информацией о параметрах этого метода.

radioButton() метод

public string radioButton(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированная радиокнопка
Исходный код: framework/web/widgets/CActiveForm.php#881 (показать)
public function radioButton($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeRadioButton($model,$attribute,$htmlOptions);
}

Отображает радиокнопку для атрибута модели. Этот метод является оберткой для CHtml::activeRadioButton. Пожалуйста, обратитесь к CHtml::activeRadioButton за подробной информацией о параметрах этого метода.

radioButtonList() метод

public string radioButtonList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$data array пары «значение-подпись», используемые для генерации списка радиокнопок.
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированный список радиокнопок
Исходный код: framework/web/widgets/CActiveForm.php#960 (показать)
public function radioButtonList($model,$attribute,$data,$htmlOptions=array())
{
    return 
CHtml::activeRadioButtonList($model,$attribute,$data,$htmlOptions);
}

Отображает список радиокнопок для атрибута модели. Этот метод является оберткой для CHtml::activeRadioButtonList. Пожалуйста, обратитесь к CHtml::activeRadioButtonList за подробной информацией о параметрах этого метода.

rangeField() метод (доступен начиная с v1.1.11)

public string rangeField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерованное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#662 (показать)
public function rangeField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeRangeField($model,$attribute,$htmlOptions);
}

Генерирует поле ввода диапазона для атрибута модели. Этот метод является оберткой для CHtml::activeRangeField. Пожалуйста, обратитесь к CHtml::activeRangeField за подробной информацией о параметрах этого метода.

run() метод

public void run()
Исходный код: framework/web/widgets/CActiveForm.php#343 (показать)
public function run()
{
    if(
is_array($this->focus))
        
$this->focus="#".CHtml::activeId($this->focus[0],$this->focus[1]);

    echo 
CHtml::endForm();
    
$cs=Yii::app()->clientScript;
    if(!
$this->enableAjaxValidation && !$this->enableClientValidation || empty($this->attributes))
    {
        if(
$this->focus!==null)
        {
            
$cs->registerCoreScript('jquery');
            
$cs->registerScript('CActiveForm#focus',"
                if(!window.location.hash)
                    jQuery('"
.$this->focus."').focus();
            "
);
        }
        return;
    }

    
$options=$this->clientOptions;
    if(isset(
$this->clientOptions['validationUrl']) && is_array($this->clientOptions['validationUrl']))
        
$options['validationUrl']=CHtml::normalizeUrl($this->clientOptions['validationUrl']);

    foreach(
$this->_summaryAttributes as $attribute)
        
$this->attributes[$attribute]['summary']=true;
    
$options['attributes']=array_values($this->attributes);

    if(
$this->summaryID!==null)
        
$options['summaryID']=$this->summaryID;

    if(
$this->focus!==null)
        
$options['focus']=$this->focus;

    if(!empty(
CHtml::$errorCss))
        
$options['errorCss']=CHtml::$errorCss;

    
$options=CJavaScript::encode($options);
    
$cs->registerCoreScript('yiiactiveform');
    
$id=$this->id;
    
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#$id').yiiactiveform($options);");
}

Выполняет виджет. Это регистрирует необходимый JavaScript-код и отображает закрывающий тег формы.

searchField() метод (доступен начиная с v1.1.14)

public string searchField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерованное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#806 (показать)
public function searchField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeSearchField($model,$attribute,$htmlOptions);
}

Отображает поле поиска для атрибута модели. Этот метод является оберткой для CHtml::activeSearchField. Пожалуйста, обратитесь к CHtml::activeSearchField за подробной информацией о параметрах этого метода.

telField() метод (доступен начиная с v1.1.14)

public string telField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#775 (показать)
public function telField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeTelField($model,$attribute,$htmlOptions);
}

Отображает поле tel для атрибута модели. Этот метод является обёрткой для CHtml::activeTelField. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeTelField.

textArea() метод

public string textArea(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированная текстовая область
Исходный код: framework/web/widgets/CActiveForm.php#851 (показать)
public function textArea($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeTextArea($model,$attribute,$htmlOptions);
}

Отображает текстовую область для атрибута модели. Этот метод является обёрткой для CHtml::activeTextArea. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeTextArea.

textField() метод

public string textField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#790 (показать)
public function textField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeTextField($model,$attribute,$htmlOptions);
}

Отображает текстовое поле для атрибута модели. Этот метод является обёрткой для CHtml::activeTextField. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeTextField.

timeField() метод (доступен с версии v1.1.14)

public string timeField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#695 (показать)
public function timeField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeTimeField($model,$attribute,$htmlOptions);
}

Отображает поле времени для атрибута модели. Этот метод является обёрткой для CHtml::activeTimeField. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeTimeField.

urlField() метод (доступен с версии v1.1.11)

public string urlField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#614 (показать)
public function urlField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeUrlField($model,$attribute,$htmlOptions);
}

Отображает поле URL для атрибута модели. Этот метод является обёрткой для CHtml::activeUrlField. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeUrlField.

validate() метод

public static string validate(mixed $models, array $attributes=NULL, boolean $loadInput=true)
$models mixed один экземпляр модели или массив моделей.
$attributes array список атрибутов, которые должны быть валидированы. По умолчанию равно null, что означает, что должны быть валидированы все атрибуты, указанные в соответствующих правилах валидации моделей. Если этот параметр задан как список атрибутов, будут валидированы только указанные атрибуты.
$loadInput boolean загружать ли данные из массива $_POST в этом методе. Если это true, модель будет заполняться из $_POST[ModelClass].
{return} string представление сообщений об ошибках валидации в формате JSON.
Исходный код: framework/web/widgets/CActiveForm.php#977 (показать)
public static function validate($models, $attributes=null, $loadInput=true)
{
    
$result=array();
    if(!
is_array($models))
        
$models=array($models);
    foreach(
$models as $model)
    {
        
$modelName=CHtml::modelName($model);
        if(
$loadInput && isset($_POST[$modelName]))
            
$model->attributes=$_POST[$modelName];
        
$model->validate($attributes);
        foreach(
$model->getErrors() as $attribute=>$errors)
            
$result[CHtml::activeId($model,$attribute)]=$errors;
    }
    return 
function_exists('json_encode') ? json_encode($result) : CJSON::encode($result);
}

Валидирует одну или несколько моделей и возвращает результаты в формате JSON. Это вспомогательный метод, который упрощает написание кода валидации AJAX.

validateTabular() метод

public static string validateTabular(mixed $models, array $attributes=NULL, boolean $loadInput=true)
$models mixed массив экземпляров моделей.
$attributes array список атрибутов, которые должны быть валидированы. По умолчанию равно null, что означает, что должны быть валидированы все атрибуты, указанные в соответствующих правилах валидации моделей. Если этот параметр задан как список атрибутов, будут валидированы только указанные атрибуты.
$loadInput boolean загружать ли данные из массива $_POST в этом методе. Если это true, модель будет заполняться из $_POST[ModelClass][$i].
{return} string представление сообщений об ошибках валидации в формате JSON.
Исходный код: framework/web/widgets/CActiveForm.php#1006 (показать)
public static function validateTabular($models, $attributes=null, $loadInput=true)
{
    
$result=array();
    if(!
is_array($models))
        
$models=array($models);
    foreach(
$models as $i=>$model)
    {
        
$modelName=CHtml::modelName($model);
        if(
$loadInput && isset($_POST[$modelName][$i]))
            
$model->attributes=$_POST[$modelName][$i];
        
$model->validate($attributes);
        foreach(
$model->getErrors() as $attribute=>$errors)
            
$result[CHtml::activeId($model,'['.$i.']'.$attribute)]=$errors;
    }
    return 
function_exists('json_encode') ? json_encode($result) : CJSON::encode($result);
}

Валидирует массив экземпляров моделей и возвращает результаты в формате JSON. Это вспомогательный метод, который упрощает написание кода AJAX-валидации для табличных данных.

weekField() метод (доступен с версии v1.1.16)

public string weekField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel модель данных
$attribute string атрибут
$htmlOptions array дополнительные атрибуты HTML.
{return} string сгенерированное поле ввода
Исходный код: framework/web/widgets/CActiveForm.php#743 (показать)
public function weekField($model,$attribute,$htmlOptions=array())
{
    return 
CHtml::activeWeekField($model,$attribute,$htmlOptions);
}

Отображает поле недели для атрибута модели. Этот метод является обёрткой для CHtml::activeWeekField. Для получения подробной информации о параметрах этого метода, обратитесь к CHtml::activeWeekField.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveForm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API