我使用Yii2高级与Twig集成。我需要包含js和css文件来阻止块并使用AssetBundle。
如果我使用POS_BEGIN或POS_END工作。 Js和css加载到当前位置的页面。但是如果我将位置设置为POS_HEAD渲染,则忽略此状态并且不加载文件到页面。
请帮忙。我做错了什么?
我的AssetBundle
namespace frontend\assets;
use yii\web\AssetBundle;
class YandexAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'/css/map.css'
];
public $js = [
'js/map.js',
'js/test.js'
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
public $jsOptions = [ 'position' => \yii\web\View::POS_HEAD ];
}
并在Twig模板中连接
{{ use('frontend/assets/YandexAsset')}}
{{ register_yandex_asset() }}
答案 0 :(得分:0)
来自http://www.yiiframework.com/doc-2.0/guide-structure-assets.html:
资产依赖性主要通过 yii \ web \ AssetBundle :: $依赖属性。在AppAsset示例中, 资产包依赖于另外两个资产包:yii \ web \ YiiAsset和 yii \ bootstrap \ BootstrapAsset,表示CSS和JavaScript文件 在AppAsset中将包含在两个依赖项中的那些文件之后 束。
两种资产 ' YII \网络\ YiiAsset&#39 ;, ' YII \引导\ BootstrapAsset&#39 ;, 包含在渲染页面的末尾,您的资产不能放在它们之前,因为它们都依赖于它们。
如果要在POS_HEAD中包含js文件,可以在视图或布局文件中使用registerJsFile()
http://www.yiiframework.com/doc-2.0/yii-web-view.html#registerJsFile()-detail