在 yii2 中使用自定义主题的网格视图时出现命名空间错误


Namespace error when using gridview using custom theme in yii2

我是 yii2 的新手,但我使用 Yii 1.x 已经有很长一段时间了。我正在使用 Yii2 的高级模板并为后端实现自定义主题。我正在为后端使用 https://github.com/mithun12000/adminUI 主题。我设置了我的主题如下:

  1. 使用作曲家安装主题

  2. 在后端/配置/主中添加了主题支持.php如下所示:

    'view'=>[
        'theme'=>[
            'pathMap'=>['@app/views'=>'@webroot/themes/admin/views'],
            'baseUrl'=>'@web/themes/admin'
        ]
    ],
    
  3. 将命名空间 app''assets; 更改为命名空间后端''assets; 在后端/assets/AppAsset中.php

  4. 我在 web 文件夹中创建了我的主题作为后端/网络/主题/管理员,并将我的观点放在那里。

  5. 在我的控制器中,为了使用我刚刚创建的主题,我输入了以下代码:

    $this->getView()->theme = Yii::createObject([
        'class' => ''yii'base'Theme',
        'pathMap' => ['@backend/views' => '@webroot/themes/admin/views'],
        'baseUrl' => '@web/themes/admin',
    ]);
    
  6. 登录屏幕工作正常。但是如果我有任何小部件,假设 Gridview,那么我会收到命名空间错误。我得到的错误是:

    Unknown Class – yii'base'UnknownClassException
    Unable to find 'app'assets'AppAsset' in file: D:'projects'bmjobs'site'backend/assets/AppAsset.php. Namespace missing?
    

如果我将 AppAsset.php 中的命名空间更改为 app''assets,则会出现以下错误:

    PHP Fatal Error – yii'base'ErrorException
    Call to a member function checkAccess() on a non-object

不确定我哪里出错了。任何人都可以帮我解决这个问题吗?

提前谢谢。

您可以在backend/config/main.php中更改pathMap

'pathMap' => ['@app/views' => '@app/themes/admin/views'],