вторник, 12 марта 2013 г.

Yii: как работать с AssetManager

AssetManager предназначен для публикации файлов js, css, png и др. ресурсы в папке webroot/asserts/.

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

Публикация выполняется методом AssetManager::publish($path), где $path - путь к папке с ресурсами которые нужно опубликовать.

Часто для публикации ресурсов и последующего доступа к ним, в базовый класс контроллера добавляют свойство getAssetsUrl():

class Controller extends CController
{
   private $_assetsUrl;
   public function getAssetsUrl() {
       if ($this->_assetsUrl === null) {
           $this->_assetsUrl = Yii::app()->assetManager->
               publish(Yii::getPathOfAlias('application.assets'));
       }
       return $this->_assetsUrl;
   }
}
UPDATE Не знаю для чего создавать временную переменную, т.к. внутри метода publish тоже есть проверка о публикации.

И во вьющке используют это свойство так:
<link rel="stylesheet" type="text/css" href="<?=$this->assetsUrl?>/css/main.css" />

Вот статья по теме на хабре.

Комментариев нет:

Отправить комментарий