Spec-Zone.ru › Yii 1.1

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
CWidget — базовый класс для виджетов.

Виджет — это самодостаточный компонент, который может генерировать представление на основе данных модели. Его можно рассматривать как микро-контроллер, который встраивается в управляемые контроллером представления.

По сравнению с контроллером, у виджета нет ни действий, ни фильтров.

Использование описано в 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, тема к этому виджету не будет применена.

См. также

  • CWidgetFactory

viewPath свойство только для чтения

public string getViewPath(boolean $checkTheme=false)

Возвращает директорию, содержащую файлы представлений для этого виджета. По умолчанию возвращает поддиректорию 'views' директории, содержащей файл класса виджета. Если $checkTheme установлен в true, будет возвращена директория "ThemeID/views/ClassName", если она существует.

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

__construct() метод

public void __construct(CBaseController $owner=NULL)
$owner CBaseController владелец/создатель этого виджета. Это может быть либо виджет, либо контроллер.
Исходный код: framework/web/widgets/CWidget.php#92 (показать)
public function __construct($owner=null)
{
    
$this->_owner=$owner===null?Yii::app()->getController():$owner;
}

Конструктор.

actions() метод

public static array actions()
{return} array
Исходный код: framework/web/widgets/CWidget.php#83 (показать)
public static function actions()
{
    return array();
}

Возвращает список действий, используемых этим виджетом. Структура возвращаемого значения этого метода похожа на возвращаемое значение CController::actions.

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

Обратите внимание, при создании URL-адресов, ссылающихся на действия, перечисленные в этом методе, убедитесь, что идентификаторы действий опережаются префиксом actionPrefix.

См. также

  • actionPrefix
  • CController::actions

getController() метод

public CController getController()
{return} CController контроллер, к которому принадлежит этот виджет.
Исходный код: framework/web/widgets/CWidget.php#132 (показать)
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 виджета.
Исходный код: framework/web/widgets/CWidget.php#111 (показать)
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 владелец/создатель этого виджета. Это может быть либо виджет, либо контроллер.
Исходный код: framework/web/widgets/CWidget.php#101 (показать)
public function getOwner()
{
    return 
$this->_owner;
}

Возвращает владельца/создателя этого виджета.

getViewFile() метод

public string getViewFile(string $viewName)
$viewName string имя представления (без расширения файла)
{return} string путь к файлу представления. False, если файл представления не существует
Исходный код: framework/web/widgets/CWidget.php#200 (показать)
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. Имя представления также может ссылаться на псевдоним пути, если он содержит точки.

См. также

  • CApplication::findLocalizedFile

getViewPath() метод

public string getViewPath(boolean $checkTheme=false)
$checkTheme boolean следует ли проверять, содержит ли тема путь к представлению для виджета.
{return} string директория, содержащая файлы представлений для данного виджета.
Исходный код: framework/web/widgets/CWidget.php#165 (показать)
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()
Исходный код: framework/web/widgets/CWidget.php#146 (показать)
public function 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, если результат рендеринга не требуется.
Исходный код: framework/web/widgets/CWidget.php#241 (показать)
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 и будет доступен в скрипте.

См. также

  • getViewFile

run() метод

public void run()
Исходный код: framework/web/widgets/CWidget.php#154 (показать)
public function run()
{
}

Выполняет виджет. Этот метод вызывается CBaseController::endWidget.

setId() метод

public void setId(string $value)
$value string ID виджета.
Исходный код: framework/web/widgets/CWidget.php#123 (показать)
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

Spec-Zone.ru

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