我试图以这种方式注册CSS文件
$this->registerCssFile('../node_modules/fullcalendar/dist/fullcalendar.css', [
'depends' => [\yii\web\JqueryAsset::className()]
]);但我知道错误是:
加载资源失败。
例如,我知道我站在web文件夹前,所以我用这种方式编写了上面的代码。
我在没有registerCssFile的情况下进行了尝试,并在视图文件中直接编写了以下内容:
<link href="../node_modules/fullcalendar/dist/fullcalendar.css" rel="stylesheet">因此,当我在浏览器中检查时,该方法在所有相对路径之前添加一个斜杠(/),因此我认为错误是在registerCssFile中引起的:
<link href="/../node_modules/fullcalendar/dist/fullcalendar.css" rel="stylesheet">无论如何,问题是如何使用regiserCssFile(正确的方法)来实现它?
或者我怎么才能去掉那个斜杠?
以防万一:
/yii2app
|_/views
|_/whatever
|_myview.php
|_/web
|_/node_modules
|_/fullcalendar
|_/dist
|_fullcalendar.css发布于 2018-03-10 22:46:57
web目录中,并从../中删除尾随的../。
就像下面
$this->registerCssFile('node_modules/fullcalendar/dist/fullcalendar.css',[‘依赖’=> \yii\web\JqueryAsset::className() ];
/yii2app/web目录是运行应用程序Entry script的地方,因此不需要提供相对于视图文件的路径,而需要提供web目录。AssetManager从web目录之外加载资产,并使用$sourcePath选项使用web之外的目录。
见下面资产管理器的演示。
名称空间app\AssetBundle;使用yii\web\AssetBundle;使用yii\web\View;// set @themes别名,这样我们不必每次更改主题Yii::setAlias('@ themes ',Yii::$app->view-> /** -> baseUrl )时都更新/***主前端应用程序资产包。*/ class FullCalendarAsset扩展了AssetBundle { public $sourcePath =‘@app/node_$sourcePath/’;公共$css =‘Full日历/dist/_ $js _$js’;public $depends = 'yii\web\YiiAsset','yii\bootstrap\BootstrapAsset','yii\bootstrap\BootstrapPluginAsset',};
将上面的文件放在app/assets目录中,然后放在视图中。
使用app\assets;FullCal宪兵资产::$this;
您应该了解应用程序LIFE CYCLE。https://stackoverflow.com/questions/49213307
复制相似问题