styleroom
(Styleroom)
April 6, 2015, 6:45am
1
всем привет
помогите разобраться с подключением своих CSS и JS файлов
в основном шаблоне есть два вызовы, которые не совсем понятны
<?php $this->beginBody() ?>
<?php $this->head() ?>
<?php $this->endBody() ?>
$this->head(), видимо, отвечает за подключение css-файлов после title
<link href="/assets/32ef74af/css/bootstrap.css" rel="stylesheet">
<link href="/css/site.css" rel="stylesheet"></head>
а $this->endBody(), видимо, за подключение js-файлов перед </body>
<script src="/assets/91f715a2/jquery.js"></script>
<script src="/assets/75b54071/yii.js"></script>
<script src="/assets/32ef74af/js/bootstrap.js"></script>
вопрос: как манипулировать подключаемыми css и js файлами?
например:
ай нид ё хэлп
ineersa
(Ineersa)
April 6, 2015, 7:10am
2
В yii2 это все делается через ассеты.
http://www.yiiframework.com/doc-2.0/guide-structure-assets.html
Ну собственно как у меня например:
//layout
<?php
use yii\helpers\Html;
use app\assets\MainAsset;
/**
* @var \yii\web\View $this
* @var string $content
*/
MainAsset::register($this);
?>
<?php $this->beginPage() ?>
...
//asset
<?php
namespace app\assets;
use yii\web\AssetBundle;
class MainAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
...
];
public $js = [];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
public function init(){
if (YII_ENV_DEV){
$this->js = [
...
];
} else {
$this->js = [
...
];
}
parent::init();
}
}
P.S. как то у меня не получилось автоматом разделить dev и прод скрипты, может кто подскажет. Собственно на фронтенде ангулар, скрипты через bower.
styleroom
(Styleroom)
April 6, 2015, 7:41am
4
все оказалось еще проще - в корне уже есть директория assets
в которой лежит класс AppAsset
там можно подключить все…
но вот тема НЕ подключения родных css и js
и очередность отображения js в подвале
все равно не ясна
ineersa
(Ineersa)
April 6, 2015, 7:46am
5
styleroom:
все оказалось еще проще - в корне уже есть директория assets
в которой лежит класс AppAsset
там можно подключить все…
но вот тема НЕ подключения родных css и js
и очередность отображения js в подвале
все равно не ясна
Насчет родных:
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
У вас какраз и есть подключение родных скриптов.
Очередность такая как указана в массиве (у меня так).
А вообще интересен вопрос еще насчет dev - prod, если найдете или кто сможет помочь буду рад, так как мой костыль выглядит жутко на самом деле (40+ скриптов все таки).
styleroom
(Styleroom)
April 6, 2015, 7:54am
6
чую, что подключенные в рукопашную файлы куда управляемее…
без
<?php $this->beginBody() ?>
<?php $this->head() ?>
<?php $this->endBody() ?>
да будет так!
ineersa
(Ineersa)
April 6, 2015, 8:07am
7
<?php $this->beginBody() ?>
<?php $this->head() ?>
<?php $this->endBody() ?>
Нужны, для вывода по позиции и прочего. Но вот систему бандлов и ассетов я счел не совсем удобной.
Например у меня есть 50+ скриптов для дев и 40+ для прода.
По сути нужно сделать 2 файла, подключить их в конфиге как
'assetManager' => [
'bundles' => require(__DIR__ . '/' . (YII_ENV_PROD ? 'assets-prod.php' : 'assets-dev.php')),
],
и затем уже в самом ассете делать depends на бандл.
Ну да ладно, мысли вслух.
styleroom
(Styleroom)
April 6, 2015, 8:16am
8
сорри за оффтоп - с виджетами разобрался
ineersa
(Ineersa)
April 6, 2015, 8:25am
9
По дефолту путь к вьюшкам будет WidgetPath/views, тоесть если рендерите из widgets/views - то сам класс виджета должен лежать в widgets.