Как и где включить js и css для модулей?
У меня есть модули для категории:
+modules/
+category/
+assets/
+css/
+js/
+images/
+components/
+controllers/
+models/
+views/
-CategoryModule.php
Каков наилучший способ включить CSS и JSS во все виды?
5 ответов
Опубликовать и зарегистрироваться в CategoryModule
init
Метод - это сделает ваши CSS и JS в модуле категории.
Что-то вроде этого:
public function init() {
$path = $this->assetManager->publish(Yii::getPathOfAlias('application.modules.category.assets'));
$this->clientScript->registerCssFile($path . '/css/some-css.css', 'screen, projection');
$this->clientScript->registerScriptFile($path . '/js/some-js.js');
}
Создайте файл макета модуля в разделе views/layout и назовите его в файле конфигурации модуля как
$this->layoutPath = Yii::getPathOfAlias('application.modules.moduleName.views.layouts');
$this->layout = '/layouts/layoutname';
зарегистрируйте все файлы js и css как упомянутое @PeterM
Создайте папку "макеты" в папке с вашими представлениями. Создайте main.php в этой папке раскладок.
В вашем, добавьте следующий код:
<link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?>/css/style.css" type="text/css" media="screen"/>
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/cycle.js"></script>
Это ваш макет по умолчанию. Так что добавь,
<?php echo $content; ?>
Это еще один способ включить css и js во все представления.
Легко использовать этот статический метод
<?php Yii::app()->clientScript->registerCssFile(Yii::getPathOfAlias('application.modules.curriculo.assets') . '/bootstrap/datepicker/css/datepicker.css'); ?>
<?php Yii::app()->clientScript->registerScriptFile(Yii::getPathOfAlias('application.modules.curriculo.assets') . '/bootstrap/datepicker/js/bootstrap-datepicker.js'); ?>
Это должно помочь вам:
http://www.yiiframework.com/wiki/249/understanding-the-view-rendering-flow/
Все три раздела (beginContent, container и endContent) объяснены подробно.