Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii 2:无法在扩展中找到类';yii2管理员';_Php_Yii2 - Fatal编程技术网

Php Yii 2:无法在扩展中找到类';yii2管理员';

Php Yii 2:无法在扩展中找到类';yii2管理员';,php,yii2,Php,Yii2,扩展的Github项目: 我使用的是yii2的高级模板,因此我将后端、前端和通用文件夹都放在了高级文件夹中 高级文件夹本身与供应商文件夹处于同一级别 我有其他的扩展,所有的都在工作 然后我通过composer安装了yii2 admin php composer.phar require mdmsoft/yii2-admin "*" 装置运转良好 到供应商文件夹中,我现在已将带有yii2 admin子文件夹的mdmsoft文件夹放入其中 这是vendor/yiisoft/extensions.p

扩展的Github项目:

我使用的是yii2的高级模板,因此我将
后端
前端
通用
文件夹都放在了
高级
文件夹中

高级文件夹本身与供应商文件夹处于同一级别

我有其他的扩展,所有的都在工作

然后我通过composer安装了yii2 admin

php composer.phar require mdmsoft/yii2-admin "*"
装置运转良好

到供应商文件夹中,我现在已将带有
yii2 admin
子文件夹的mdmsoft文件夹放入其中

这是v
endor/yiisoft/extensions.php的实际内容(由composer安装修改,我没有手动触摸它)

这些将adedd配置为
backend/config/main.php

<?php
return [
    ...
    'components' => [
        ...
        'authManager' => [
            'class' => 'yii\rbac\DbManager', // or use 'yii\rbac\PhpManager'
        ],
    ],
];
'modules' => [
    'admin' => [
        'class' => 'mdm\admin\Module',
    ]
],
'components' => [

    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            'admin/*', // add or remove allowed actions to this list
        ]
    ],
],
(我省略了每个代码块中的无用代码)

我还启用了漂亮的url。而且它起作用了

完成错误堆栈

2014-11-06 17:05:49 [127.0.0.1][-][-][error][ReflectionException] exception 'ReflectionException' with message 'Class mdm\admin\Module does not exist' in C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\di\Container.php:408
Stack trace:
#0 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\di\Container.php(408): ReflectionClass->__construct('mdm\\admin\\Modul...')
#1 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\di\Container.php(354): yii\di\Container->getDependencies('mdm\\admin\\Modul...')
#2 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\di\Container.php(147): yii\di\Container->build('mdm\\admin\\Modul...', Array, Array)
#3 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\BaseYii.php(344): yii\di\Container->get('mdm\\admin\\Modul...', Array, Array)
#4 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\base\Module.php(354): yii\BaseYii::createObject(Array, Array)
#5 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\base\Module.php(511): yii\base\Module->getModule('admin')
#6 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\base\Module.php(449): yii\base\Module->createController('admin/route')
#7 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\web\Application.php(83): yii\base\Module->runAction('admin/route', Array)
#8 C:\xampp\htdocs\advanced\vendor\yiisoft\yii2\base\Application.php(375): yii\web\Application->handleRequest(Object(yii\web\Request))
#9 C:\xampp\htdocs\advanced\backend\web\index.php(18): yii\base\Application->run()
#10 {main}
问题

如果我在
/admin
打开后端,我会遇到此异常

ReflectionException类mdm\admin\Module不存在

这是我的第一个Yii2应用程序,所以我不知道问题出在哪里以及如何调试它

编辑1

我选中了C:\xampp\htdocs\vendor\mdmsoft\yii2 admin\Module.php,在它的内容中有
模块
类定义

class Module extends \yii\base\Module
编辑2

我的第一个错误是,
asAccess
被放入
组件
数组中。但它必须在它之外,在同一水平上

现在错误已更改:

Class mdm\admin\components\AccessControl does not exist
“我将此配置添加到common/config/main.php”
注意:不要放在
公共
,放在
前端
后端
。。。控制台应用程序没有用户组件,不需要访问控制

试着在
后端/config/main
的“模块”前面添加这个

'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'extensions' => require(__DIR__ . '/../../vendor/yiisoft/extensions.php'),
'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
    ],
],
我不得不假设整个过程前面都有返回,所以整个代码如下所示:

return [
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
    'extensions' => require(__DIR__ . '/../../vendor/yiisoft/extensions.php'),
    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'authManager' => [
            'class' => 'yii\rbac\DbManager', 
        ],
    ],
    'modules'=>[
        'admin' => [
            'class' => 'mdm\admin\Module',
        ],
    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            'admin/*',
        ],
    ],
];

希望这有帮助:D

首先:这是错误的

'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            // 'admin/*', // add or remove allowed actions to this list
        ]
    ],
],
必须如下所示:

'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
],
'as access' => [
    'class' => 'mdm\admin\components\AccessControl',
    'allowActions' => [
        // 'admin/*', // add or remove allowed actions to this list
    ]
],
:必须运行此命令

php composer.phar require mdmsoft/yii2-admin "*"
从应用程序根目录(
htdocs\advanced
)中,而不是从您执行yii安装的位置(您进入了
htdocs
)。只有通过这种方式才能在应用程序中安装yii2 admin

第三个:控制台没有authManager不是真的!如果您必须使用rbac,只需将默认的yii2迁移配置到console应用程序中即可。所以我的建议是:将authManager配置到控制台中,并在需要的地方将其他东西配置到前端和/或后端


第四个:您无法从后端管理前端路由,因此您需要启用此模块,即使是进入前端

抱歉,没有更改。我没有启用缓存组件,但我当然不是问题所在。另外:我必须将authManager配置设置为公共配置,因为迁移(包括在extesion中)需要it@realtebo所有的相对路径都正确放置了吗?停止:第一个错误,我在组件中添加了“asAccess”,但它必须在外部,但现在错误不同了:“类mdm\admin\components\AccessControl不存在”我已经找到了正确答案的所有部分。所以我将发布它,因为_访问应该在组件数组中看到这里,我相信这个答案是不正确的。表示“authManager”应该位于“组件”内部,这是合乎逻辑的。
php composer.phar require mdmsoft/yii2-admin "*"