Spec-Zone.ru › Yii 1.1

CForm

Пакет system.web.form
Наследование class CForm » CFormElement » CComponent
Реализует ArrayAccess
С версии 1.1
Исходный код framework/web/form/CForm.php
CForm представляет объект формы, содержащий спецификации входных данных формы.

Основная цель введения абстракции объектов формы заключается в повышении повторного использования форм. В частности, мы можем разделить форму на две части: те, которые определяют каждый отдельный элемент формы, и те, которые их оформляют. Объект 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
END_OF_DOCUMENT_MARKER

Общедоступные методы

Метод Описание Определено в
__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. Если первый, это означает, что форма является главной; если второй, это означает, что эта форма является дочерней.
Исходный код: framework/web/form/CForm.php#173 (показать)
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.
Исходный код: framework/web/form/CForm.php#560 (показать)
public function addedElement($name,$element,$forButtons)
{
}

Этот метод вызывается после добавления элемента в коллекцию элементов.

clicked() метод

public boolean clicked(string $name)
$name string Имя кнопки
{return} boolean True, если кнопка нажата; иначе false.
Исходный код: framework/web/form/CForm.php#215 (показать)
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.
Исходный код: framework/web/form/CForm.php#581 (показать)
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.
Исходный код: framework/web/form/CForm.php#280 (показать)
public function getActiveFormWidget()
{
    if(
$this->_activeForm!==null)
        return 
$this->_activeForm;
    else
        return 
$this->getRoot()->_activeForm;
}

getButtons() метод

public CFormElementCollection getButtons()
{return} CFormElementCollection элементы формы.
Исходный код: framework/web/form/CForm.php#377 (показать)
public function getButtons()
{
    if(
$this->_buttons===null)
        
$this->_buttons=new CFormElementCollection($this,true);
    return 
$this->_buttons;
}

Возвращает элементы кнопок этой формы. Обратите внимание, что возвращаемое значение — объект CFormElementCollection, что означает, что вы можете использовать его как массив. Подробнее см. CMap.

getElements() метод

public CFormElementCollection getElements()
{return} CFormElementCollection элементы формы.
Исходный код: framework/web/form/CForm.php#348 (показать)
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 модель, связанная с данной формой. Если у этой формы нет модели, она будет искать модель в своих предках.
Исходный код: framework/web/form/CForm.php#306 (показать)
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 массив моделей, связанных с данной формой или её вложенными формами.
Исходный код: framework/web/form/CForm.php#328 (показать)
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 владелец этой формы. Это может быть контроллер или виджет, с помощью которого создана и отображена форма.
Исходный код: framework/web/form/CForm.php#292 (показать)
public function getOwner()
{
    
$owner=$this->getParent();
    while(
$owner instanceof self)
        
$owner=$owner->getParent();
    return 
$owner;
}

getRoot() метод

public CForm getRoot()
{return} CForm объект формы верхнего уровня
Исходный код: framework/web/form/CForm.php#267 (показать)
public function getRoot()
{
    
$root=$this;
    while(
$root->getParent() instanceof self)
        
$root=$root->getParent();
    return 
$root;
}

getUniqueId() метод

protected string getUniqueId()
{return} string уникальный идентификатор, определяющий данную форму
Исходный код: framework/web/form/CForm.php#593 (показать)
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()
Исходный код: framework/web/form/CForm.php#190 (показать)
protected function init()
{
}

Инициализирует данную форму. Этот метод вызывается в конце конструктора. Вы можете переопределить этот метод, чтобы обеспечить кастомизированную инициализацию (например, конфигурирование объекта формы).

loadData() метод

public void loadData()
Исходный код: framework/web/form/CForm.php#244 (показать)
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();
    }
}

Загружает данные, отправленные с формы, в соответствующую модель (или модели). Данный метод пройдёт по всем моделям, связанным с этой формой и вложенными формами, и массово присвоит отправленные данные моделям.

См. также

  • submitted

offsetExists() метод

public boolean offsetExists(mixed $offset)
$offset смещение смещение, по которому нужно проверить элемент
{return} boolean
Исходный код: framework/web/form/CForm.php#607 (показать)
public function offsetExists($offset)
{
    return 
$this->getElements()->contains($offset);
}

Возвращает, существует ли элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.

offsetGet() метод

public mixed offsetGet(integer $offset)
$offset целое число смещение для извлечения элемента.
{return} смещение элемент по смещению; null, если элемент не найден по смещению
Исходный код: framework/web/form/CForm.php#618 (показать)
public function offsetGet($offset)
{
    return 
$this->getElements()->itemAt($offset);
}

Возвращает элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.

offsetSet() метод

public void offsetSet(integer $offset, mixed $item)
$offset целое число смещение для установки элемента
$item смещение значение элемента
Исходный код: framework/web/form/CForm.php#629 (показать)
public function offsetSet($offset,$item)
{
    
$this->getElements()->add($offset,$item);
}

Устанавливает элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.

offsetUnset() метод

public void offsetUnset(mixed $offset)
$offset смещение смещение для удаления элемента
Исходный код: framework/web/form/CForm.php#639 (показать)
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.
Исходный код: framework/web/form/CForm.php#571 (показать)
public function removedElement($name,$element,$forButtons)
{
}

Этот метод вызывается после удаления элемента из коллекции элементов.

render() метод

public string render()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#403 (показать)
public function render()
{
    return 
$this->renderBegin() . $this->renderBody() . $this->renderEnd();
}

Отображает форму. Стандартная реализация просто вызывает renderBegin, renderBody и renderEnd.

renderBegin() метод

public string renderBegin()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#413 (показать)
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()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#468 (показать)
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()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#513 (показать)
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 или строка, представляющая имя элемента формы.
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#527 (показать)
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()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#501 (показать)
public function renderElements()
{
    
$output='';
    foreach(
$this->getElements() as $element)
        
$output.=$this->renderElement($element);
    return 
$output;
}

Отображает элементы в этой форме.

renderEnd() метод

public string renderEnd()
{возвращаемое значение} строка результат рендеринга
Исходный код: framework/web/form/CForm.php#446 (показать)
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 массив настройки кнопок
Исходный код: framework/web/form/CForm.php#391 (показать)
public function setButtons($buttons)
{
    
$collection=$this->getButtons();
    foreach(
$buttons as $name=>$config)
        
$collection->add($name,$config);
}

Настраивает кнопки этой формы. Настройка должна быть массивом конфигураций кнопок, индексированных по имени кнопки. Каждый массив конфигурации кнопки содержит пары имя-значение, используемые для инициализации объекта CFormButtonElement.

setElements() метод

public void setElements(array $elements)
$elements массив настройки элементов
Исходный код: framework/web/form/CForm.php#364 (показать)
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 модель, которая будет связана с этой формой
Исходный код: framework/web/form/CForm.php#319 (показать)
public function setModel($model)
{
    
$this->_model=$model;
}

submitted() метод

public boolean submitted(string $buttonName='submit', boolean $loadData=true)
$buttonName строка имя кнопки отправки
$loadData логическое значение должны ли вызываться loadData, если форма отправлена, чтобы данные отправки можно было поместить в связанные модели.
{возвращаемое значение} логическое значение была ли эта форма отправлена.
Исходный код: framework/web/form/CForm.php#202 (показать)
public function submitted($buttonName='submit',$loadData=true)
{
    
$ret=$this->clicked($this->getUniqueId()) && $this->clicked($buttonName);
    if(
$ret && $loadData)
        
$this->loadData();
    return 
$ret;
}

Возвращает значение, указывающее, была ли эта форма отправлена.

См. также

  • loadData

validate() метод

public boolean validate()
{возвращаемое значение} логическое значение все модели валидны
Исходный код: framework/web/form/CForm.php#230 (показать)
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

Spec-Zone.ru

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