Spec-Zone.ru › Yii 1.1

CBaseController

Пакет system.web
Наследование абстрактный класс CBaseController » CComponent
Подклассы CController, CWidget
С момента 1.0
Исходный код framework/web/CBaseController.php
CBaseController — базовый класс для CController и CWidget.

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

CBaseController также реализует поддержку следующих функций:
  • Клипы : клип — это фрагмент полученного вывода, который можно вставить в другое место.
  • Виджеты : виджет — это автономный подконтроллер со своим представлением и моделью.
  • Кэширование фрагментов : кэширование фрагментов выборочно кэширует часть вывода.


Чтобы использовать виджет в представлении, используйте следующее в представлении:
$this->widget('path.to.widgetClass',array('property1'=>'value1',...));
или
$this->beginWidget('path.to.widgetClass',array('property1'=>'value1',...));
// ... display other contents here
$this->endWidget();


Для создания клипа используйте следующее:
$this->beginClip('clipID');
// ... display the clip contents
$this->endClip();
Затем в другом представлении или месте захваченный клип можно вставить как:
echo $this->clips['clipID'];


Обратите внимание, что $this в приведенном выше коде относится к текущему контроллеру, поэтому, если вам нужно получить доступ к клипу из виджета, где $this относится к самому виджету, вам нужно сделать это следующим образом:

echo $this->getController()->clips['clipID'];


Чтобы использовать кэширование фрагментов, сделайте следующее:
if($this->beginCache('cacheID',array('property1'=>'value1',...))
{
    // ... display the content to be cached here
   $this->endCache();
}

Публичные методы

Метод Описание Определено в
__call() Вызывает метод по имени, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
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
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getViewFile() Возвращает файл скрипта представления в соответствии с заданным именем представления. CBaseController
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли у указанного события прикрепленные обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
raiseEvent() Возбуждает событие. CComponent
renderFile() Рендерит файл представления. CBaseController
renderInternal() Рендерит файл представления. CBaseController
widget() Создает виджет и выполняет его. CBaseController

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

beginCache() метод

public boolean beginCache(string $id, array $properties=array ( ))
$id строка уникальный идентификатор, определяющий фрагмент, который будет кэширован.
$properties массив начальные значения свойств для COutputCache.
{return} логическое нужно ли генерировать контент для кэширования. False, если кэшированная версия доступна.
Исходный код: framework/web/CBaseController.php#262 (показать)
public function beginCache($id,$properties=array())
{
    
$properties['id']=$id;
    
$cache=$this->beginWidget('COutputCache',$properties);
    if(
$cache->getIsContentCached())
    {
        
$this->endCache();
        return 
false;
    }
    else
        return 
true;
}

Начинает кэширование фрагментов. Этот метод отобразит кэшированный контент, если он доступен. В противном случае он начнет кэширование и ожидает вызова endCache() для завершения кэширования и сохранения контента в кэше. Типичное использование кэширования фрагментов приведено ниже,

if($this->beginCache($id))
{
    // ...generate content here
    $this->endCache();
}

См. также

  • endCache

beginClip() метод

public void beginClip(string $id, array $properties=array ( ))
$id строка идентификатор клипа.
$properties массив начальные значения свойств для CClipWidget.
Исходный код: framework/web/CBaseController.php#229 (показать)
public function beginClip($id,$properties=array())
{
    
$properties['id']=$id;
    
$this->beginWidget('CClipWidget',$properties);
}

Начинает запись клипа. Этот метод — сокращение для начала CClipWidget.

beginContent() метод

public void beginContent(mixed $view=NULL, array $data=array ( ))
$view смешанный имя представления, которое будет использоваться для оформления содержимого. Фактический сценарий представления разрешается с помощью getViewFile. Если этот параметр равен null (по умолчанию), будет использоваться шаблон по умолчанию в качестве представления для оформления. Обратите внимание, что если текущий контроллер не принадлежит ни к одному модулю, шаблон по умолчанию относится к шаблону по умолчанию приложения; если контроллер принадлежит модулю, шаблон по умолчанию относится к шаблону по умолчанию модуля.
$data массив переменные (имя=>значение), которые будут извлечены и сделаны доступными в представлении для оформления.
Исходный код: framework/web/CBaseController.php#298 (показать)
public function beginContent($view=null,$data=array())
{
    
$this->beginWidget('CContentDecorator',array('view'=>$view, 'data'=>$data));
}

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

См. также

  • endContent
  • CContentDecorator

beginWidget() метод

public CWidget beginWidget(string $className, array $properties=array ( ))
$className строка имя класса виджета или класс в формате с точками (например, application.widgets.MyWidget)
$properties массив список начальных значений свойств виджета (Имя свойства => Значение свойства)
{возвращает} CWidget созданный виджет для запуска
Исходный код: framework/web/CBaseController.php#196 (показать)
public function beginWidget($className,$properties=array())
{
    
$widget=$this->createWidget($className,$properties);
    
$this->_widgetStack[]=$widget;
    return 
$widget;
}

Создает виджет и выполняет его. Этот метод похож на widget(), за исключением того, что он ожидает вызова endWidget() для завершения выполнения.

См. также

  • endWidget

createWidget() метод

public CWidget createWidget(string $className, array $properties=array ( ))
$className строка имя класса (может быть в формате псевдонима пути)
$properties массив начальные значения свойств
{возвращает} CWidget полностью инициализированный экземпляр виджета.
Исходный код: framework/web/CBaseController.php#144 (показать)
public function createWidget($className,$properties=array())
{
    
$widget=Yii::app()->getWidgetFactory()->createWidget($this,$className,$properties);
    
$widget->init();
    return 
$widget;
}

Создаёт виджет и инициализирует его. Этот метод сначала создаёт указанный экземпляр виджета. Затем он настраивает свойства виджета с помощью заданных начальных значений. В конце он вызывает CWidget::init для инициализации виджета. Начиная с версии 1.1, если включён фабрика виджетов, этот метод будет использовать фабрику для создания виджета.

endCache() метод

public void endCache()
Исходный код: framework/web/CBaseController.php#280 (показать)
public function endCache()
{
    
$this->endWidget('COutputCache');
}

Завершает кэширование фрагмента. Это псевдоним для endWidget.

См. также

  • beginCache

endClip() метод

public void endClip()
Исходный код: framework/web/CBaseController.php#239 (показать)
public function endClip()
{
    
$this->endWidget('CClipWidget');
}

Завершает запись клипа. Этот метод является алиасом для endWidget.

endContent() метод

public void endContent()
Исходный код: framework/web/CBaseController.php#307 (показать)
public function endContent()
{
    
$this->endWidget('CContentDecorator');
}

Завершает отрисовку содержимого.

См. также

  • beginContent

endWidget() метод

public CWidget endWidget(string $id='')
$id строка необязательный тег, идентифицирующий вызов метода для отладки.
{возвращает} CWidget виджет, который только что завершил работу
Исходный код: framework/web/CBaseController.php#211 (показать)
public function endWidget($id='')
{
    if((
$widget=array_pop($this->_widgetStack))!==null)
    {
        
$widget->run();
        return 
$widget;
    }
    else
        throw new 
CException(Yii::t('yii','{controller} has an extra endWidget({id}) call in its view.',
            array(
'{controller}'=>get_class($this),'{id}'=>$id)));
}

Завершает выполнение указанного виджета. Этот метод используется вместе с beginWidget().

См. также

  • beginWidget

getViewFile() метод

abstract public string getViewFile(string $viewName)
$viewName строка имя представления
{возвращает} строка путь к файлу представления с указанным именем. Ложь, если представление не найдено.
Исходный код: framework/web/CBaseController.php#77 (показать)
abstract public function getViewFile($viewName);

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

renderFile() метод

public string renderFile(string $viewFile, array $data=NULL, boolean $return=false)
$viewFile строка путь к файлу представления
$data массив данные, которые должны быть извлечены и доступны для представления
$return булево является ли результат отрисовки должен быть возвращен, а не выводиться
{возвращает} строка результат отрисовки. Null, если результат отрисовки не требуется.
Исходный код: framework/web/CBaseController.php#89 (показать)
public function renderFile($viewFile,$data=null,$return=false)
{
    
$widgetCount=count($this->_widgetStack);
    if((
$renderer=Yii::app()->getViewRenderer())!==null && $renderer->fileExtension==='.'.CFileHelper::getExtension($viewFile))
        
$content=$renderer->renderFile($this,$viewFile,$data,$return);
    else
        
$content=$this->renderInternal($viewFile,$data,$return);
    if(
count($this->_widgetStack)===$widgetCount)
        return 
$content;
    else
    {
        
$widget=end($this->_widgetStack);
        throw new 
CException(Yii::t('yii','{controller} contains improperly nested widget tags in its view "{view}". A {widget} widget does not have an endWidget() call.',
            array(
'{controller}'=>get_class($this), '{view}'=>$viewFile, '{widget}'=>get_class($widget))));
    }
}

Отображает файл представления.

renderInternal() метод

public string renderInternal(string $_viewFile_, array $_data_=NULL, boolean $_return_=false)
$_viewFile_ строка файл представления
$_data_ массив данные, которые должны быть извлечены и доступны для файла представления
$_return_ булево должен ли результат отрисовки возвращаться в виде строки
{возвращает} строка результат отрисовки. Null, если результат отрисовки не требуется.
Исходный код: framework/web/CBaseController.php#115 (показать)
public function renderInternal($_viewFile_,$_data_=null,$_return_=false)
{
    
// we use special variable names here to avoid conflict when extracting data
    
if(is_array($_data_))
        
extract($_data_,EXTR_PREFIX_SAME,'data');
    else
        
$data=$_data_;
    if(
$_return_)
    {
        
ob_start();
        
ob_implicit_flush(false);
        require(
$_viewFile_);
        return 
ob_get_clean();
    }
    else
        require(
$_viewFile_);
}

Отображает файл представления. Этот метод включает файл представления как PHP-скрипт и получает результат отображения при необходимости.

widget() метод

public mixed widget(string $className, array $properties=array ( ), boolean $captureOutput=false)
$className строка имя класса виджета или класс в формате с точками (например, application.widgets.MyWidget)
$properties массив список начальных значений свойств виджета (Имя свойства => Значение свойства)
$captureOutput булево следует ли захватить вывод виджета. Если true, метод захватывает и возвращает вывод, сгенерированный виджетом. Если false, вывод будет отправлен для отображения непосредственно, а объект виджета будет возвращён. Этот параметр доступен с версии 1.1.2.
{возвращает} смешанный экземпляр виджета, когда $captureOutput равен false, или вывод виджета, когда $captureOutput равен true.
Исходный код: framework/web/CBaseController.php#161 (показать)
public function widget($className,$properties=array(),$captureOutput=false)
{
    if(
$captureOutput)
    {
        
ob_start();
        
ob_implicit_flush(false);
        try
        {
            
$widget=$this->createWidget($className,$properties);
            
$widget->run();
        }
        catch(
Exception $e)
        {
            
ob_end_clean();
            throw 
$e;
        }
        return 
ob_get_clean();
    }
    else
    {
        
$widget=$this->createWidget($className,$properties);
        
$widget->run();
        return 
$widget;
    }
}

Создаёт виджет и выполняет его.

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

Spec-Zone.ru

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