Yii2如何正确注册CSS文件

Yii2如何正确注册CSS文件,yii2,yii2-basic-app,Yii2,Yii2 Basic App,我正试图以这种方式注册CSS文件 $this->registerCssFile('../node_modules/fullcalendar/dist/fullcalendar.css', [ 'depends' => [\yii\web\JqueryAsset::className()] ]); 但我得到了一个错误: 未能加载资源 例如,我知道我站在web文件夹,所以这就是我以这种方式编写上述代码的原因 我尝试不使用registerCssFile,直接在视图文件中写

我正试图以这种方式注册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">
无论如何,问题是如何使用
regisercsfile
(正确的方法)实现它

或者,我如何删除该斜线

以防万一:

/yii2app
        |_/views
                |_/whatever
                           |_myview.php
        |_/web
        |_/node_modules
                       |_/fullcalendar
                                     |_/dist
                                            |_fullcalendar.css
  • 我建议您的第一件事是将文件夹移动到
    web
    目录中,并从URL中删除尾部的
    。/

    如下

    $this->registerCssFile('node_modules/fullcalendar/dist/fullcalendar.css', [
        'depends' => [\yii\web\JqueryAsset::className()]
    ]);
    
    /yii2app/web
    目录是运行应用程序的地方,因此您不需要提供相对于视图文件的路径,而需要提供
    web
    目录

  • 否则,请使用
    AssetManager
    web
    目录外部加载资产,并使用
    $sourcePath
    选项使用
    web
    目录外部的目录

    请参见下面的Asset manager演示

    namespace app\assets;
    use Yii;
    use yii\web\AssetBundle;
    use yii\web\View;
    
    
    // set @themes alias so we do not have to update baseUrl every time we change themes
    Yii::setAlias('@themes', Yii::$app->view->theme->baseUrl);
    
    /**
     * Main frontend application asset bundle.
     */
    class FullCalendarAsset extends AssetBundle
    {
        public $sourcePath = '@app/node_modules/';
    
        public $css = [
            'fullcalendar/dist/_fullcalendar.css',       
        ];
        public $js = [
    
    
        ];
        public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
            'yii\bootstrap\BootstrapPluginAsset',        
        ];
    
    }
    
    将上述文件放在
    app/assets
    目录中,然后放在视图中

    use app\assets\FullCalendarAsset;
    FullCalendarAsset::register($this);
    
    您应该了解应用程序


添加了一个答案,看看是否有帮助谢谢你,穆罕默德,我做了你的第一个解决方案,效果很好。你好。不客气@MarkWatney:)很高兴我能帮你
use app\assets\FullCalendarAsset;
FullCalendarAsset::register($this);