Создание и сопровождение сайтов

Блог. Yii. Подсказки по yii. Глава третья.

Поиск

  Наконец дошли руки до написания следующей части подсказок по фреймворку Yii.

  1. Вставляем javascript и css на страницы.

    Файл стилей .css:

     

    1. Yii::app()->clientScript->registerCssFile(Yii::app()->assetManager->publish(Yii::app()->basePath . '/css/').'css1.css''screen');  

     

    Вставка скриптов в составе фреймворка:

     

    1. Yii::app()->clientScript->registerCoreScript('jquery');  

     

    Вставка стороннего javascript файла:

     

    1. Yii::app()->clientScript->registerScriptFile(Yii::app()->assetManager->publish(Yii::app()->basePath . '/js/'). '/jcarousel/lib/jquery.jcarousel.min.js', CClientScript::POS_END);  

     

    Вставка javascript на странице:

     

    1. Yii::app()->clientScript->registerScript('loading'' 
    2.     $("#loading").bind("ajaxSend", function(){ 
    3.         $(this).show(); 
    4.     }).bind("ajaxComplete", function(){ 
    5.         $(this).hide(); 
    6.     }); 
    7. ', CClientScript::POS_READY);  

     

    , где POS_READY значит, что скрипт выполнится в $(document).ready(function() { })

    POS_LOAD - скрипт выполнится в window.onload

    POS_END - вставка перед закрывающим тэгом body

    POS_BEGIN - вставка перед открывающим тэгом body

    POS_HEAD - вставка перед тэгом title

  2. Метод контроллера по-умолчанию:

     

    1. class MainController extends CController {  
    2.     public $defaultAction='test';  
    3.     ....  
    4.       
    5.     public function actionTest() {  
    6.     }  
    7.     ....  
    8. }  

     

    Теперь ваше Yii приложение будет обращаться к методу test по таким запросам:

    index.php?r=main

    или /main (если включены ЧПУ урлы)

  3. Ошибка "Cannot instantiate abstract class CActiveRecord".

    Вставьте в модель вашего модуля следующий код:

     

    1. public static function model($className=__CLASS__) {  
    2.     return parent::model($className);  
    3. }  

     

  4. Изменение URL главной страницы с помощью homeUrl.

    Для доступа к главной странице мы можем использовать:

     

    1. $this->redirect(Yii::app()->homeUrl);  

     

    в файле config/main.php мы можем переопределить страницу:

     

    1. ...  
    2. 'homeUrl' => array('user/register'),  
    3. 'components' => array(  
    4. ...  

     

  5. Как получить текущее имя контроллера и имя действия.

    Для получения текущего названия контроллера (id) в вашем контроллере или представлении:

     

    1. $controllerId = Yii::app()->controller->id;  

     

    Для получения названия действия (action id) используйте:

     

    1. $actionId = $this->getAction()->getId();  

     

    в методах (beforeAction/afterAction):

     

    1. public function beforeAction($action) {  
    2.     $actionId = $action->id;  
    3.     ...  
    4. }  

     

  6. Иногда требуется отправить пользователю полный урл, включая host вашего сайта (например, активация после регистрации), используйте createAbsoluteUrl:

     

    1. $url = Yii::app()->createAbsoluteUrl('user/activation',array('activationKey'=>$activationKey));  

     

Обсудить статью на форуме