在yii2中使用自定义主题使用gridview时发生命名空间错误

时间:2015-01-02 11:34:24

标签: php gridview namespaces yii2 yii2-advanced-app

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

  1. 使用composer

  2. 安装主题
  3. 在backend / config / main.php中添加了主题支持,如下所示:

    'view'=>[
        'theme'=>[
            'pathMap'=>['@app/views'=>'@webroot/themes/admin/views'],
            'baseUrl'=>'@web/themes/admin'
        ]
    ],
    
  4. 更改名称空间app \ assets;进入命名空间后端\ assets;在backend / assets / AppAsset.php

  5. 我在web文件夹中创建了我的主题作为backend / web / themes / admin并将我的观点放在那里。

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

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

    Unknown Class – yii\base\UnknownClassException
    
    Unable to find 'app\assets\AppAsset' in file: D:\projects\bmjobs\site\backend/assets/AppAsset.php. Namespace missing?
    
  8. 如果我将AppAsset.php中的命名空间更改为app \ assets,那么我会收到以下错误:

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

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

    提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以更改pathMap

中的backend/config/main.php
'pathMap' => ['@app/views' => '@app/themes/admin/views'],