CForm
| Пакет | system.web.form |
|---|---|
| Наследование | class CForm » CFormElement » CComponent |
| Реализует | ArrayAccess |
| С версии | 1.1 |
| Исходный код | framework/web/form/CForm.php |
Основная цель введения абстракции объектов формы заключается в повышении повторного использования форм. В частности, мы можем разделить форму на две части: те, которые определяют каждый отдельный элемент формы, и те, которые их оформляют. Объект CForm представляет первую часть. Он полагается на процесс рендеринга для выполнения оформления элементов формы. Повторное использование в основном достигается в процессе рендеринга. То есть, процесс рендеринга может быть повторно использован для рендеринга различных объектов CForm.
Форма может быть отображена различными способами. Можно вызвать метод render для быстрого рендеринга формы без написания кода HTML; можно также переопределить render для рендеринга формы в другом макете; и можно использовать внешний шаблон представления для явного рендеринга каждого элемента формы. Таким образом, метод render может быть применен ко всем видам форм и, таким образом, достигает максимального повторного использования; в то время как внешний шаблон представления сохраняет максимальную гибкость в рендеринге сложных форм.
Спецификации входных данных формы организованы в виде иерархии элементов формы. В корне иерархии находится корневой объект CForm. Корневой объект формы хранит своих потомков в двух коллекциях: elements и buttons. Первая содержит некнопочные элементы формы (CFormStringElement, CFormInputElement и CForm); последняя в основном содержит кнопочные элементы (CFormButtonElement). Когда объект CForm встраивается в коллекцию elements, он называется дочерней формой, которая может иметь свои собственные коллекции elements и buttons и, таким образом, формировать всю иерархию форм.
Дочерние формы в основном используются для обработки нескольких моделей. Например, в форме регистрации пользователя мы можем использовать корневую форму для сбора входных данных для таблицы пользователей, а дочернюю форму для сбора входных данных для таблицы профилей. Дочерняя форма также является хорошим способом разделить длинную форму на более короткие, даже если все входные данные могут принадлежать одной модели.
Спецификации входных данных формы задаются в виде конфигурационного массива, который используется для инициализации значений свойств объекта CForm. Свойства elements и buttons требуют особого внимания, поскольку они являются основными свойствами, которые необходимо настроить. Для настройки elements необходимо указать массив, подобный следующему:
'elements'=>array(
'username'=>array('type'=>'text', 'maxlength'=>80),
'password'=>array('type'=>'password', 'maxlength'=>80),
)
Вышеприведенный код определяет два элемента ввода: 'username' и 'password'. Обратите внимание, что объект модели должен иметь точно такие же атрибуты 'username' и 'password'. Каждый элемент имеет тип, который определяет, какой вид ввода следует использовать. Остальные элементы массива (например, 'maxlength') в спецификации ввода отображаются как атрибуты HTML-элементов при отображении поля ввода. Свойство buttons настраивается аналогично. Если вы собираетесь использовать AJAX и/или клиентскую проверку форм с включенным общим представлением ошибок, вам необходимо установить свойство $showErrors в true. Для получения более подробной информации см. документацию по нему.
Для получения более подробной информации о настройке элементов формы, пожалуйста, обратитесь к CFormInputElement и CFormButtonElement.
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| action | смешанный | URL действия формы (см. CHtml::normalizeUrl для получения дополнительной информации об этом параметре. | CForm |
| activeForm | массив | конфигурация, используемая для создания виджета активной формы. | CForm |
| activeFormWidget | CActiveForm | виджет активной формы, связанный с этой формой. | CForm |
| attributes | массив | значения атрибутов HTML для тега формы. | CForm |
| buttonElementClass | строка | имя класса для представления элемента кнопки формы. | CForm |
| buttons | CFormElementCollection | Возвращает элементы кнопок этой формы. | CForm |
| description | строка | описание этой формы. | CForm |
| elements | CFormElementCollection | Возвращает элементы ввода этой формы. | CForm |
| errorSummaryFooter | строка|null | код HTML для добавления к списку ошибок в сводке ошибок. | CForm |
| errorSummaryHeader | строка|null | код HTML для добавления в начало списка ошибок в сводке ошибок. | CForm |
| inputElementClass | строка | имя класса для представления элемента ввода формы. | CForm |
| method | строка | метод отправки этой формы. | CForm |
| model | CModel | Возвращает модель, с которой связана эта форма. | CForm |
| models | массив | Возвращает все модели, связанные с этой формой или ее дочерними формами. | CForm |
| owner | CBaseController | владелец этой формы. | CForm |
| parent | смешанный | прямой родитель этого элемента. | CFormElement |
| root | CForm | объект формы верхнего уровня | CForm |
| showErrorSummary | булево | отображать ли сводку ошибок. | CForm |
| showErrors | булево|null | отображать ли элементы ошибок атрибутов формы. | CForm |
| title | строка | заголовок для этой формы. | CForm |
| visible | булево | Возвращает значение, указывающее, отображается ли этот элемент и должен ли он отображаться. | CFormElement |
Защищенные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| uniqueId | строка | Возвращает уникальный идентификатор, который идентифицирует эту форму на текущей странице. | CForm |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CForm |
| __get() | Возвращает значение свойства или атрибута. | CFormElement |
| __isset() | Проверяет существование или непустоту значения свойства или атрибута. | CFormElement |
| __set() | Устанавливает значение свойства или атрибута. | CFormElement |
| __toString() | Преобразует объект в строку. | CFormElement |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| addedElement() | Этот метод вызывается после добавления элемента в коллекцию элементов. | CForm |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| clicked() | Возвращает значение, указывающее, нажата ли указанная кнопка. | CForm |
| configure() | Настраивает этот объект начальными значениями свойств. | CFormElement |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикрепленные к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикрепленные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| getActiveFormWidget() | Возвращает активный виджет формы, связанный с этой формой. Этот метод вернет активный виджет формы, как указано в activeForm. | CForm |
| getButtons() | Возвращает элементы кнопок этой формы. | CForm |
| getElements() | Возвращает элементы ввода этой формы. | CForm |
| getEventHandlers() | Возвращает список прикрепленных обработчиков событий для события. | CComponent |
| getModel() | Возвращает модель, с которой связана эта форма. | CForm |
| getModels() | Возвращает все модели, связанные с этой формой или ее подформами. | CForm |
| getOwner() | Возвращает владельца этой формы. Это относится к контроллеру или виджету, с помощью которого создана и отображается форма. | CForm |
| getParent() | Возвращает непосредственного родителя этого элемента. Это может быть объект CForm или объект CBaseController (контроллер или виджет). | CFormElement |
| getRoot() | Возвращает объект формы верхнего уровня | CForm |
| getVisible() | Возвращает значение, указывающее, виден ли этот элемент и должен ли он отображаться. | CFormElement |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, имеет ли указанное событие прикрепленные обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| loadData() | Загружает данные, отправленные пользователем, в связанную(ые) модель(и) формы. | CForm |
| offsetExists() | Возвращает, существует ли элемент по указанному смещению. | CForm |
| offsetGet() | Возвращает элемент по указанному смещению. | CForm |
| offsetSet() | Устанавливает элемент по указанному смещению. | CForm |
| offsetUnset() | Удаляет элемент по указанному смещению. | CForm |
| raiseEvent() | Вызывает событие. | CComponent |
| removedElement() | Этот метод вызывается после удаления элемента из коллекции элементов. | CForm |
| render() | Отображает форму. | CForm |
| renderBegin() | Отображает открывающий тег формы. | CForm |
| renderBody() | Отображает содержимое тела этой формы. | CForm |
| renderButtons() | Отображает кнопки в этой форме. | CForm |
| renderElement() | Отображает отдельный элемент, который может быть элементом ввода, подформой, строкой или кнопкой. | CForm |
| renderElements() | Отображает элементы в этой форме. | CForm |
| renderEnd() | Отображает закрывающий тег формы. | CForm |
| setButtons() | Настраивает кнопки этой формы. | CForm |
| setElements() | Настраивает элементы ввода этой формы. | CForm |
| setModel() | Устанавливает модель, которая должна быть связана с этой формой | CForm |
| setVisible() | Устанавливает, виден ли этот элемент и должен ли он отображаться. | CFormElement |
| submitted() | Возвращает значение, указывающее, отправлена ли эта форма. | CForm |
| validate() | Проверяет модели, связанные с этой формой. | CForm |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| evaluateVisible() | Определяет видимость этой формы. | CForm |
| getUniqueId() | Возвращает уникальный идентификатор, определяющий эту форму на текущей странице. | CForm |
| init() | Инициализирует эту форму. | CForm |
Подробное описание свойств
action свойство
public mixed $action;
URL действия формы (см. CHtml::normalizeUrl для подробностей об этом параметре). По умолчанию пустая строка, означающая текущий URL запроса. Это свойство игнорируется, когда эта форма является дочерней.
activeForm свойство (доступно начиная с версии 1.1.1)
public array $activeForm;
Настройка, используемая для создания активной формы виджета. Виджет будет использоваться для рендеринга тега формы и сообщений об ошибках. Параметр 'class' обязателен, он указывает класс виджета. Остальные параметры будут переданы в вызов CBaseController::beginWidget(). По умолчанию массив ('class'=>'CActiveForm').
activeFormWidget свойство только для чтения (доступно начиная с версии 1.1.1)
public CActiveForm getActiveFormWidget()
Активный виджет формы, связанный с этой формой. Этот метод вернёт активный виджет формы, как указано в activeForm.
attributes свойство
public array $attributes;
Значения HTML атрибутов для тега формы. Если форма вложена в другую форму, это свойство будет использоваться для рендеринга значений HTML атрибутов для тега fieldset, окружающего дочернюю форму.
buttonElementClass свойство
public string $buttonElementClass;
Имя класса для представления элемента кнопки формы. По умолчанию 'CFormButtonElement'.
buttons свойство
public CFormElementCollection getButtons()
public void setButtons(array $buttons)
Возвращает элементы кнопок этой формы. Обратите внимание, что возвращаемый результат — объект CFormElementCollection, что означает, что вы можете использовать его как массив. Для более подробной информации см. CMap.
description свойство
public string $description;
Описание этой формы.
elements свойство
public CFormElementCollection getElements()
public void setElements(array $elements)
Возвращает элементы ввода этой формы. Это включает текстовые строки, элементы ввода и дочерние формы. Обратите внимание, что возвращаемый результат — объект CFormElementCollection, что означает, что вы можете использовать его как массив. Для более подробной информации см. CMap.
errorSummaryFooter свойство
public string|null $errorSummaryFooter;
HTML-код для добавления в список ошибок в сводке ошибок. См. CActiveForm::errorSummary().
errorSummaryHeader свойство
public string|null $errorSummaryHeader;
HTML-код для добавления перед списком ошибок в сводке ошибок. См. CActiveForm::errorSummary().
inputElementClass свойство
public string $inputElementClass;
Имя класса для представления элемента ввода формы. По умолчанию 'CFormInputElement'.
method свойство
public string $method;
Метод отправки этой формы. По умолчанию 'post'. Это свойство игнорируется, когда эта форма является дочерней.
model свойство
public CModel getModel(boolean $checkParent=true)
public void setModel(CModel $model)
Возвращает модель, с которой связана эта форма.
models свойство только для чтения
public array getModels()
Возвращает все модели, связанные с этой формой или её дочерними формами.
owner свойство только для чтения
public CBaseController getOwner()
Владелец этой формы. Это контроллер или виджет, с помощью которого форма создаётся и отображается.
root свойство только для чтения
public CForm getRoot()
Главный объект формы.
showErrorSummary свойство
public boolean $showErrorSummary;
Определяет, отображать ли сводку ошибок. По умолчанию false.
showErrors свойство (доступно начиная с версии 1.1.14)
public boolean|null $showErrors;
Определяет, должны ли быть отображены элементы ошибок атрибутов формы. Возможные значения: null, true и false.
По умолчанию null, что означает использование значения $showErrorSummary. Это сделано для обеспечения обратной совместимости с существующими приложениями. Если вы хотите использовать сводку ошибок с AJAX и/или клиентской валидацией, нужно установить это свойство в true (напомним, что CActiveForm::error() необходимо вызвать для каждого атрибута, который будет валидироваться с помощью AJAX и/или клиентской валидации).
Значение false означает, что элементы ошибок атрибутов формы не будут отображаться. Значение true означает, что элементы ошибок атрибутов формы будут отображаться.
title свойство
public string $title;
Заголовок этой формы. Если он установлен, по умолчанию вокруг тела формы может быть рендеринга тег fieldset с заголовком, использующим заголовок в качестве легенды. По умолчанию null.
uniqueId свойство только для чтения
protected string getUniqueId()
Возвращает уникальный идентификатор, определяющий эту форму на текущей странице.
Подробное описание методов
__construct() метод
public void __construct(mixed $config, CModel $model=NULL, mixed $parent=NULL) | ||
| $config | mixed | Настройка для этой формы. Это может быть массив настроек или псевдоним пути PHP-скрипта, который возвращает массив настроек. Массив настроек состоит из пар имя-значение, используемых для инициализации свойств этой формы. |
| $model | CModel | Объект модели, связанной с этой формой. Если null, используется модель родителя. |
| $parent | mixed | Прямой родитель этой формы. Это может быть объект CBaseController (контроллер или виджет), или объект CForm. Если первый, это означает, что форма является главной; если второй, это означает, что эта форма является дочерней. |
public function __construct($config,$model=null,$parent=null)
{
$this->setModel($model);
if($parent===null)
$parent=Yii::app()->getController();
parent::__construct($config,$parent);
if($this->showErrors===null)
$this->showErrors=!$this->showErrorSummary;
$this->init();
}
Конструктор. Если вы переопределяете этот метод, убедитесь, что вы не изменяете сигнатуру метода, а также что вы вызываете реализацию родителя.
addedElement() метод
public void addedElement(string $name, CFormElement $element, boolean $forButtons) | ||
| $name | string | Имя элемента |
| $element | CFormElement | Элемент, который добавляется |
| $forButtons | boolean | Определяет, добавляется ли элемент в коллекцию buttons. Если false, элемент добавляется в коллекцию elements. |
public function addedElement($name,$element,$forButtons)
{
}
Этот метод вызывается после добавления элемента в коллекцию элементов.
clicked() метод
public boolean clicked(string $name) | ||
| $name | string | Имя кнопки |
| {return} | boolean | True, если кнопка нажата; иначе false. |
public function clicked($name)
{
if(strcasecmp($this->getRoot()->method,'get'))
return isset($_POST[$name]);
else
return isset($_GET[$name]);
}
Возвращает значение, указывающее, была ли нажата указанная кнопка.
evaluateVisible() метод
protected boolean evaluateVisible() | ||
| {return} | boolean | True, если форма видима; иначе false. |
protected function evaluateVisible()
{
foreach($this->getElements() as $element)
if($element->getVisible())
return true;
return false;
}
Определяет видимость этой формы. Метод проверит видимость элементов elements. Если хотя бы один из них видим, форма считается видимой. В противном случае — нет.
getActiveFormWidget() метод (доступно начиная с версии 1.1.1)
public CActiveForm getActiveFormWidget() | ||
| {return} | CActiveForm | активный виджет формы, связанный с данной формой. Этот метод вернёт активный виджет формы, как указано в activeForm. |
public function getActiveFormWidget()
{
if($this->_activeForm!==null)
return $this->_activeForm;
else
return $this->getRoot()->_activeForm;
}
getButtons() метод
public CFormElementCollection getButtons() | ||
| {return} | CFormElementCollection | элементы формы. |
public function getButtons()
{
if($this->_buttons===null)
$this->_buttons=new CFormElementCollection($this,true);
return $this->_buttons;
}
Возвращает элементы кнопок этой формы. Обратите внимание, что возвращаемое значение — объект CFormElementCollection, что означает, что вы можете использовать его как массив. Подробнее см. CMap.
getElements() метод
public CFormElementCollection getElements() | ||
| {return} | CFormElementCollection | элементы формы. |
public function getElements()
{
if($this->_elements===null)
$this->_elements=new CFormElementCollection($this,false);
return $this->_elements;
}
Возвращает элементы ввода этой формы. Это включает текстовые строки, элементы ввода и подформы. Обратите внимание, что возвращаемое значение — объект CFormElementCollection, что означает, что вы можете использовать его как массив. Подробнее см. CMap.
getModel() метод
public CModel getModel(boolean $checkParent=true) | ||
| $checkParent | boolean | указывает, следует ли вернуть модель родителя, если у данной формы нет собственной модели. |
| {return} | CModel | модель, связанная с данной формой. Если у этой формы нет модели, она будет искать модель в своих предках. |
public function getModel($checkParent=true)
{
if(!$checkParent)
return $this->_model;
$form=$this;
while($form->_model===null && $form->getParent() instanceof self)
$form=$form->getParent();
return $form->_model;
}
Возвращает модель, с которой связана эта форма.
getModels() метод
public array getModels() | ||
| {return} | array | массив моделей, связанных с данной формой или её вложенными формами. |
public function getModels()
{
$models=array();
if($this->_model!==null)
$models[]=$this->_model;
foreach($this->getElements() as $element)
{
if($element instanceof self)
$models=array_merge($models,$element->getModels());
}
return $models;
}
Возвращает все модели, связанные с этой формой или её вложенными формами.
getOwner() метод
public CBaseController getOwner() | ||
| {return} | CBaseController | владелец этой формы. Это может быть контроллер или виджет, с помощью которого создана и отображена форма. |
public function getOwner()
{
$owner=$this->getParent();
while($owner instanceof self)
$owner=$owner->getParent();
return $owner;
}
getRoot() метод
public CForm getRoot() | ||
| {return} | CForm | объект формы верхнего уровня |
public function getRoot()
{
$root=$this;
while($root->getParent() instanceof self)
$root=$root->getParent();
return $root;
}
getUniqueId() метод
protected string getUniqueId() | ||
| {return} | string | уникальный идентификатор, определяющий данную форму |
protected function getUniqueId()
{
if(isset($this->attributes['id']))
return 'yform_'.$this->attributes['id'];
else
return 'yform_'.sprintf('%x',crc32(serialize(array_keys($this->getElements()->toArray()))));
}
Возвращает уникальный идентификатор, определяющий эту форму на текущей странице.
init() метод
protected void init() |
Инициализирует данную форму. Этот метод вызывается в конце конструктора. Вы можете переопределить этот метод, чтобы обеспечить кастомизированную инициализацию (например, конфигурирование объекта формы).
loadData() метод
public void loadData() |
public function loadData()
{
if($this->_model!==null)
{
$class=CHtml::modelName($this->_model);
if(strcasecmp($this->getRoot()->method,'get'))
{
if(isset($_POST[$class]))
$this->_model->setAttributes($_POST[$class]);
}
elseif(isset($_GET[$class]))
$this->_model->setAttributes($_GET[$class]);
}
foreach($this->getElements() as $element)
{
if($element instanceof self)
$element->loadData();
}
}
Загружает данные, отправленные с формы, в соответствующую модель (или модели). Данный метод пройдёт по всем моделям, связанным с этой формой и вложенными формами, и массово присвоит отправленные данные моделям.
См. также
offsetExists() метод
public boolean offsetExists(mixed $offset) | ||
| $offset | смещение | смещение, по которому нужно проверить элемент |
| {return} | boolean | |
public function offsetExists($offset)
{
return $this->getElements()->contains($offset);
}
Возвращает, существует ли элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.
offsetGet() метод
public mixed offsetGet(integer $offset) | ||
| $offset | целое число | смещение для извлечения элемента. |
| {return} | смещение | элемент по смещению; null, если элемент не найден по смещению |
public function offsetGet($offset)
{
return $this->getElements()->itemAt($offset);
}
Возвращает элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.
offsetSet() метод
public void offsetSet(integer $offset, mixed $item) | ||
| $offset | целое число | смещение для установки элемента |
| $item | смещение | значение элемента |
public function offsetSet($offset,$item)
{
$this->getElements()->add($offset,$item);
}
Устанавливает элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.
offsetUnset() метод
public void offsetUnset(mixed $offset) | ||
| $offset | смещение | смещение для удаления элемента |
public function offsetUnset($offset)
{
$this->getElements()->remove($offset);
}
Удаляет элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.
removedElement() метод
public void removedElement(string $name, CFormElement $element, boolean $forButtons) | ||
| $name | строка | имя элемента |
| $element | CFormElement | удаляемый элемент |
| $forButtons | boolean | указывает, удаляется ли элемент из коллекции buttons. Если false, элемент удаляется из коллекции elements. |
public function removedElement($name,$element,$forButtons)
{
}
Этот метод вызывается после удаления элемента из коллекции элементов.
render() метод
public string render() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function render()
{
return $this->renderBegin() . $this->renderBody() . $this->renderEnd();
}
Отображает форму. Стандартная реализация просто вызывает renderBegin, renderBody и renderEnd.
renderBegin() метод
public string renderBegin() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function renderBegin()
{
if($this->getParent() instanceof self)
return '';
else
{
$options=$this->activeForm;
if(isset($options['class']))
{
$class=$options['class'];
unset($options['class']);
}
else
$class='CActiveForm';
$options['action']=$this->action;
$options['method']=$this->method;
if(isset($options['htmlOptions']))
{
foreach($this->attributes as $name=>$value)
$options['htmlOptions'][$name]=$value;
}
else
$options['htmlOptions']=$this->attributes;
ob_start();
$this->_activeForm=$this->getOwner()->beginWidget($class, $options);
return ob_get_clean() . "<div style=\"display:none\">".CHtml::hiddenField($this->getUniqueID(),1)."</div>\n";
}
}
Отображает открывающий тег формы. Стандартная реализация отобразит открывающий тег формы.
renderBody() метод
public string renderBody() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function renderBody()
{
$output='';
if($this->title!==null)
{
if($this->getParent() instanceof self)
{
$attributes=$this->attributes;
unset($attributes['name'],$attributes['type']);
$output=CHtml::openTag('fieldset', $attributes)."<legend>".$this->title."</legend>\n";
}
else
$output="<fieldset>\n<legend>".$this->title."</legend>\n";
}
if($this->description!==null)
$output.="<div class=\"description\">\n".$this->description."</div>\n";
if($this->showErrorSummary && ($model=$this->getModel(false))!==null)
$output.=$this->getActiveFormWidget()->errorSummary($model,$this->errorSummaryHeader,$this->errorSummaryFooter)."\n";
$output.=$this->renderElements()."\n".$this->renderButtons()."\n";
if($this->title!==null)
$output.="</fieldset>\n";
return $output;
}
Отображает содержимое тела формы. Этот метод в основном отображает элементы и кнопки. Если указан заголовок или описание, они также будут отображены. Если ассоциированная модель содержит ошибку, также может быть отображено резюме ошибок. Тег формы не будет отображен. Для отображения открывающего и закрывающего тегов формы вызовите renderBegin и renderEnd. Вы можете переопределить этот метод, чтобы настроить отображение формы.
renderButtons() метод
public string renderButtons() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function renderButtons()
{
$output='';
foreach($this->getButtons() as $button)
$output.=$this->renderElement($button);
return $output!=='' ? "<div class=\"row buttons\">".$output."</div>\n" : '';
}
Отображает кнопки в этой форме.
renderElement() метод
public string renderElement(mixed $element) | ||
| $element | смешанный тип | элемент формы для отображения. Это может быть экземпляр CFormElement или строка, представляющая имя элемента формы. |
| {возвращаемое значение} | строка | результат рендеринга |
public function renderElement($element)
{
if(is_string($element))
{
if(($e=$this[$element])===null && ($e=$this->getButtons()->itemAt($element))===null)
return $element;
else
$element=$e;
}
if($element->getVisible())
{
if($element instanceof CFormInputElement)
{
if($element->type==='hidden')
return "<div style=\"display:none\">\n".$element->render()."</div>\n";
else
return "<div class=\"row field_{$element->name}\">\n".$element->render()."</div>\n";
}
elseif($element instanceof CFormButtonElement)
return $element->render()."\n";
else
return $element->render();
}
return '';
}
Отображает отдельный элемент, который может быть элементом ввода, подформой, строкой или кнопкой.
renderElements() метод
public string renderElements() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function renderElements()
{
$output='';
foreach($this->getElements() as $element)
$output.=$this->renderElement($element);
return $output;
}
Отображает элементы в этой форме.
renderEnd() метод
public string renderEnd() | ||
| {возвращаемое значение} | строка | результат рендеринга |
public function renderEnd()
{
if($this->getParent() instanceof self)
return '';
else
{
ob_start();
$this->getOwner()->endWidget();
return ob_get_clean();
}
}
Отображает закрывающий тег формы.
setButtons() метод
public void setButtons(array $buttons) | ||
| $buttons | массив | настройки кнопок |
public function setButtons($buttons)
{
$collection=$this->getButtons();
foreach($buttons as $name=>$config)
$collection->add($name,$config);
}
Настраивает кнопки этой формы. Настройка должна быть массивом конфигураций кнопок, индексированных по имени кнопки. Каждый массив конфигурации кнопки содержит пары имя-значение, используемые для инициализации объекта CFormButtonElement.
setElements() метод
public void setElements(array $elements) | ||
| $elements | массив | настройки элементов |
public function setElements($elements)
{
$collection=$this->getElements();
foreach($elements as $name=>$config)
$collection->add($name,$config);
}
Настраивает элементы ввода этой формы. Настройка должна быть массивом конфигураций элементов ввода, индексированных по имени элемента ввода. Каждый массив конфигурации элемента ввода содержит пары имя-значение, используемые для инициализации объекта CFormStringElement (если 'type' равен 'string'), объекта CFormElement (если 'type' — строка, оканчивающаяся на 'Form') или объекта CFormInputElement во всех остальных случаях.
setModel() метод
public void setModel(CModel $model) | ||
| $model | CModel | модель, которая будет связана с этой формой |
public function setModel($model)
{
$this->_model=$model;
}
submitted() метод
public boolean submitted(string $buttonName='submit', boolean $loadData=true) | ||
| $buttonName | строка | имя кнопки отправки |
| $loadData | логическое значение | должны ли вызываться loadData, если форма отправлена, чтобы данные отправки можно было поместить в связанные модели. |
| {возвращаемое значение} | логическое значение | была ли эта форма отправлена. |
public function submitted($buttonName='submit',$loadData=true)
{
$ret=$this->clicked($this->getUniqueId()) && $this->clicked($buttonName);
if($ret && $loadData)
$this->loadData();
return $ret;
}
Возвращает значение, указывающее, была ли эта форма отправлена.
См. также
validate() метод
public boolean validate() | ||
| {возвращаемое значение} | логическое значение | все модели валидны |
public function validate()
{
$ret=true;
foreach($this->getModels() as $model)
$ret=$model->validate() && $ret;
return $ret;
}
Проверяет модели, связанные с этой формой. Все модели, включая связанные с подформами, будут проверены. Вы можете использовать CModel::getErrors() для получения сообщений об ошибках проверки.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CForm