Yii2添加request的baseUrl后加载的资源url也会加上这个baseUrl导致加载的不对

我的是Advanced版本,我frontend和backend是单独用不同域名的,由于怕权限管理里面跟前台的路由有相同的,所以就在后台的路径里添加个/admin

具体是在backend的main.phpcomponents里添加baseUrl => /admin添加,添加后,页面是可以访问的,就是url多了个admin,比如从backend.example.com/controller/action变成backend.example.com/admin/controller/action

'components' => [
    'request' => [
        'csrfParam' => '_csrf-backend',
        //All requests will add "/admin",e.g:
        //backend.example.com/controller/action will change to
        //backend.example.com/admin/controller/action
        'baseUrl' => '/admin',
    ],
],

但问题是,assets url也加了这个admin,导致无法加载
image.png

我试了改这个文件backend/assets/AppAsset.php里的$baseUrl,但是无论我怎么修改,它完全不起作用(没设置'baseUrl' => '/admin'的时候设置这个是有用的)

<?php

namespace backendassets;

use yiiwebAssetBundle;

/**
 * Main backend application asset bundle.
 */
class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
    
    ];
    public $depends = [
        'yiiwebYiiAsset',
        'yiibootstrapBootstrapAsset',
    ];
}

另外我发现在views页面中用registerJsFile()添加的js,就不会添加/admin,就能正常加载

$this->registerJsFile('plugins/ImageViewer/imageviewer.min.js', ['position' => View::POS_END, 'depends'=>JqueryAsset::class]);

image.png

所以想问一下大佬们,怎样设置能让assets不添加这个/admin?感觉这个文件backend/assets/AppAsset.php里应该可以设置才对呀。

阅读 2.6k
1 个回答

好吧,经过大量的搜索、仔细的查看文档以及Q群问网友,最后还是我自己解决了,如下代码所示,在components里面添加一个assetManager(必须小写开头),在里面就可以重置baseUrl

'components' => [
    'assetManager' => [
        //after settting components.request.baseUrl='/admin', the assets url will automatically add "/admin" to its url
        //to avoid this, we can set the asset baseUrl in components.assetManager.baseUrl, set it to '/assets'
        'baseUrl' => '/assets',
    ],
    'request' => [
        'csrfParam' => '_csrf-backend',
        //All requests will add "/admin",e.g:
        //www.example.com/controller/action will change to
        //www.example.com/admin/controller/action
        'baseUrl' => '/admin',
    ],
    // other configs....
],
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题