Extension的Github项目:https://github.com/mdmsoft/yii2-admin
我使用的是yii2的高级模板,所以我将backend
、frontend
和common
文件夹都放入了一个advanced
文件夹中。
高级文件夹本身在CCD_ 5文件夹的同一级别上。
我有其他的扩展,一切都在工作
然后我安装了yii2管理员由作曲家
php composer.phar require mdmsoft/yii2-admin "*"
安装工作良好。
在供应商文件夹中,我现在有一个mdmsoft文件夹,里面有yii2-admin
子文件夹
这是v endor/yiisoft/extensions.php
的实际内容(由composer安装修改,我没有手动触摸)
<?php
$vendorDir = dirname(__DIR__);
return array (
'yiisoft/yii2-jui' =>
array (
'name' => 'yiisoft/yii2-jui',
'version' => '2.0.0.0',
'alias' =>
array (
'@yii/jui' => $vendorDir . '/yiisoft/yii2-jui',
),
),
'mdmsoft/yii2-admin' =>
array (
'name' => 'mdmsoft/yii2-admin',
'version' => '1.0.2.0',
'alias' =>
array (
'@mdm/admin' => $vendorDir . '/mdmsoft/yii2-admin',
),
),
);
我将此配置添加到common/config/main.php
<?php
return [
...
'components' => [
...
'authManager' => [
'class' => 'yii'rbac'DbManager', // or use 'yii'rbac'PhpManager'
],
],
];
这些配置添加到backend/config/main.php
'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
打开我的后端,我会得到这个异常
反射异常类mdm''admin''Module不存在
这是我的第一个Yii2应用程序,所以我不知道问题出在哪里,也不知道如何调试它
编辑1
我检查了C:''examplep''htdocs''vendor''mdmsoft''yii2-admin''Module.php,在其内容中有Module
类定义
class Module extends 'yii'base'Module
编辑2
我的第一个错误是asAccess
被放入components
数组。但它必须在它之外,处于同一水平
现在错误已经改变:
Class mdm'admin'components'AccessControl does not exist
首先:这是错误的
'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管理员安装到您的应用中
第三:控制台没有authManager不是真的!如果你必须使用rbac,要简单地执行默认的yii2迁移,你必须将其配置到控制台应用程序中。因此,我的建议是:将authManager配置到控制台中,并将其他内容配置到前端和/或需要它的后端中
第四个:您无法从后端管理前端路由,因此您需要启用该模块,甚至进入前端
"我将这些配置添加到common/config/main.php"
注意:不要放在common
、frontend
或backend
。。。控制台应用程序没有用户组件,也不需要访问控制。
尝试在'modules'
之前的backend/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