CWidget
| Пакет | system.web.widgets |
|---|---|
| Наследование | class CWidget » CBaseController » CComponent |
| Подклассы | CActiveForm, CBaseListView, CBasePager, CBreadcrumbs, CCaptcha, CClipWidget, CDetailView, CFilterWidget, CFlexWidget, CInputWidget, CJuiWidget, CMenu, CPortlet, CTabView, CTreeView |
| С момента | 1.0 |
| Исходный код | framework/web/widgets/CWidget.php |
Виджет — это самодостаточный компонент, который может генерировать представление на основе данных модели. Его можно рассматривать как микро-контроллер, который встраивается в управляемые контроллером представления.
По сравнению с контроллером, у виджета нет ни действий, ни фильтров.
Использование описано в CBaseController и CBaseController::widget.
Свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| actionPrefix | строка | префикс к идентификаторам действий. | CWidget |
| controller | CController | Возвращает контроллер, к которому принадлежит этот виджет. | CWidget |
| id | строка | Возвращает идентификатор виджета или генерирует новый, если запрошено. | CWidget |
| owner | CBaseController | Возвращает владельца/создателя этого виджета. | CWidget |
| skin | смешанный | имя используемой для этого виджета темы. | CWidget |
| viewPath | строка | Возвращает директорию, содержащую файлы представления для этого виджета. | CWidget |
Публичные методы
| Метод | Описание | Определён в |
|---|---|---|
| __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 |
| createWidget() | Создаёт виджет и инициализирует его. | CBaseController |
| detachBehavior() | Открепляет поведение от компонента. | CComponent |
| detachBehaviors() | Открепляет все поведения от компонента. | CComponent |
| detachEventHandler() | Открепляет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикреплённое поведение. | CComponent |
| disableBehaviors() | Отключает все прикреплённые к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает прикреплённое поведение. | CComponent |
| enableBehaviors() | Включает все прикреплённые к этому компоненту поведения. | CComponent |
| endCache() | Заканчивает кэширование фрагмента. | CBaseController |
| endClip() | Заканчивает запись клипа. | CBaseController |
| endContent() | Заканчивает отображение содержимого. | CBaseController |
| endWidget() | Заканчивает выполнение указанного виджета. | CBaseController |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| getController() | Возвращает контроллер, к которому принадлежит этот виджет. | CWidget |
| getEventHandlers() | Возвращает список прикреплённых обработчиков событий для события. | CComponent |
| getId() | Возвращает ID виджета или генерирует новый, если требуется. | CWidget |
| getOwner() | Возвращает владельца/создателя этого виджета. | CWidget |
| getViewFile() | Ищет файл сценария представления по имени представления. | CWidget |
| getViewPath() | Возвращает директорию, содержащую файлы представлений для этого виджета. | CWidget |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, имеет ли указанное событие прикреплённые обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует виджет. | CWidget |
| raiseEvent() | Возбуждает событие. | CComponent |
| render() | Отображает представление. | CWidget |
| renderFile() | Отображает файл представления. | CBaseController |
| renderInternal() | Отображает файл представления. | CBaseController |
| run() | Выполняет виджет. | CWidget |
| setId() | Устанавливает ID виджета. | CWidget |
| widget() | Создаёт виджет и выполняет его. | CBaseController |
Подробное описание свойств
actionPrefix свойство
public string $actionPrefix;
Префикс для ID действий. Когда виджет объявлен как поставщик действий в CController::actions, можно указать префикс для различения его ID действий от других. Тот же префикс затем должен быть использован для настройки этого свойства при использовании виджета в представлении контроллера.
controller свойство только для чтения
public CController getController()
Возвращает контроллер, к которому принадлежит этот виджет.
id свойство
public string getId(boolean $autoGenerate=true)
public void setId(string $value)
Возвращает ID виджета или генерирует новый, если требуется.
owner свойство только для чтения
public CBaseController getOwner()
Возвращает владельца/создателя этого виджета.
skin свойство (доступно начиная с v1.1)
public mixed $skin;
Имя используемой темы этого виджета. По умолчанию 'default'. Если установлено false, тема к этому виджету не будет применена.
См. также
viewPath свойство только для чтения
public string getViewPath(boolean $checkTheme=false)
Возвращает директорию, содержащую файлы представлений для этого виджета. По умолчанию возвращает поддиректорию 'views' директории, содержащей файл класса виджета. Если $checkTheme установлен в true, будет возвращена директория "ThemeID/views/ClassName", если она существует.
Подробное описание методов
__construct() метод
public void __construct(CBaseController $owner=NULL) | ||
| $owner | CBaseController | владелец/создатель этого виджета. Это может быть либо виджет, либо контроллер. |
public function __construct($owner=null)
{
$this->_owner=$owner===null?Yii::app()->getController():$owner;
}
Конструктор.
actions() метод
public static array actions() | ||
| {return} | array | |
public static function actions()
{
return array();
}
Возвращает список действий, используемых этим виджетом. Структура возвращаемого значения этого метода похожа на возвращаемое значение CController::actions.
Если виджет использует несколько действий, вы можете объявить эти действия с помощью этого метода. В таком случае виджет станет поставщиком действий, и их можно легко импортировать в контроллер.
Обратите внимание, при создании URL-адресов, ссылающихся на действия, перечисленные в этом методе, убедитесь, что идентификаторы действий опережаются префиксом actionPrefix.
См. также
getController() метод
public CController getController() | ||
| {return} | CController | контроллер, к которому принадлежит этот виджет. |
public function getController()
{
if($this->_owner instanceof CController)
return $this->_owner;
else
return Yii::app()->getController();
}
Возвращает контроллер, к которому принадлежит этот виджет.
getId() метод
public string getId(boolean $autoGenerate=true) | ||
| $autoGenerate | boolean | нужно ли генерировать ID, если он не был задан ранее |
| {return} | string | ID виджета. |
public function getId($autoGenerate=true)
{
if($this->_id!==null)
return $this->_id;
elseif($autoGenerate)
return $this->_id='yw'.self::$_counter++;
}
Возвращает ID виджета или генерирует новый, если запрошено.
getOwner() метод
public CBaseController getOwner() | ||
| {return} | CBaseController | владелец/создатель этого виджета. Это может быть либо виджет, либо контроллер. |
public function getOwner()
{
return $this->_owner;
}
Возвращает владельца/создателя этого виджета.
getViewFile() метод
public string getViewFile(string $viewName) | ||
| $viewName | string | имя представления (без расширения файла) |
| {return} | string | путь к файлу представления. False, если файл представления не существует |
public function getViewFile($viewName)
{
if(($renderer=Yii::app()->getViewRenderer())!==null)
$extension=$renderer->fileExtension;
else
$extension='.php';
if(strpos($viewName,'.')) // a path alias
$viewFile=Yii::getPathOfAlias($viewName);
else
{
$viewFile=$this->getViewPath(true).DIRECTORY_SEPARATOR.$viewName;
if(is_file($viewFile.$extension))
return Yii::app()->findLocalizedFile($viewFile.$extension);
elseif($extension!=='.php' && is_file($viewFile.'.php'))
return Yii::app()->findLocalizedFile($viewFile.'.php');
$viewFile=$this->getViewPath(false).DIRECTORY_SEPARATOR.$viewName;
}
if(is_file($viewFile.$extension))
return Yii::app()->findLocalizedFile($viewFile.$extension);
elseif($extension!=='.php' && is_file($viewFile.'.php'))
return Yii::app()->findLocalizedFile($viewFile.'.php');
else
return false;
}
Ищет файл сценария представления по имени представления. Этот метод будет искать представление в viewPath виджета. Файл сценария представления имеет имя "ViewName.php". Может быть возвращён локализованный файл представления, если необходима локализация. Подробнее см. CApplication::findLocalizedFile. Имя представления также может ссылаться на псевдоним пути, если он содержит точки.
См. также
getViewPath() метод
public string getViewPath(boolean $checkTheme=false) | ||
| $checkTheme | boolean | следует ли проверять, содержит ли тема путь к представлению для виджета. |
| {return} | string | директория, содержащая файлы представлений для данного виджета. |
public function getViewPath($checkTheme=false)
{
$className=get_class($this);
$scope=$checkTheme?'theme':'local';
if(isset(self::$_viewPaths[$className][$scope]))
return self::$_viewPaths[$className][$scope];
else
{
if($checkTheme && ($theme=Yii::app()->getTheme())!==null)
{
$path=$theme->getViewPath().DIRECTORY_SEPARATOR;
if(strpos($className,'\\')!==false) // namespaced class
$path.=str_replace('\\','_',ltrim($className,'\\'));
else
$path.=$className;
if(is_dir($path))
return self::$_viewPaths[$className]['theme']=$path;
}
$class=new ReflectionClass($className);
return self::$_viewPaths[$className]['local']=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
}
}
Возвращает директорию, содержащую файлы представлений для этого виджета. По умолчанию возвращает поддиректорию 'views' в директории, содержащей файл класса виджета. Если $checkTheme установлено в true, возвращается директория "ThemeID/views/ClassName", если она существует.
init() метод
public void init() |
Инициализирует виджет. Этот метод вызывается CBaseController::createWidget и CBaseController::beginWidget после инициализации свойств виджета.
render() метод
public string render(string $view, array $data=NULL, boolean $return=false) | ||
| $view | string | имя представления для рендеринга. Подробнее о том, как разрешается сценарий представления, см. getViewFile. |
| $data | array | данные, которые будут извлечены в переменные PHP и сделаны доступными для сценария представления |
| $return | boolean | следует ли вернуть результат рендеринга вместо отображения его конечным пользователям |
| {return} | string | результат рендеринга. Null, если результат рендеринга не требуется. |
public function render($view,$data=null,$return=false)
{
if(($viewFile=$this->getViewFile($view))!==false)
return $this->renderFile($viewFile,$data,$return);
else
throw new CException(Yii::t('yii','{widget} cannot find the view "{view}".',
array('{widget}'=>get_class($this), '{view}'=>$view)));
}
Рендерит представление.
Имя представления ссылается на скрипт PHP (разрешается через getViewFile), который включается этим методом. Если $data является ассоциативным массивом, он будет извлечён как переменные PHP и будет доступен в скрипте.
См. также
run() метод
public void run() |
Выполняет виджет. Этот метод вызывается CBaseController::endWidget.
setId() метод
public void setId(string $value) | ||
| $value | string | ID виджета. |
public function setId($value)
{
$this->_id=$value;
}
Устанавливает ID виджета.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CWidget