Jason571
- Jason571 评论了源码 MoBlog一个基于Yii2的博客系统
用的phpstudy,在cmd各种尝试没成功,换到Linux里面,就发现了问题。
linux终端就是这点好,重点会给你标出来。composer update
即可轻松搞定
附:composer install 与 composer update 的区别
一句话就是:
composer install适合生产环境,以composer.lock里面的为准进行安装;
composer update则以composer.json中的为准,重新更新依赖,更新的结果写入composer.lock。
https://blog.csdn.net/sanbingyutuoniao123/article/details/52025565 由于无法使用composer完成依赖安装,所以我解决了依赖后新建了一个版本库,供大家使用。https://github.com/kunx-edu/moblog
另附上解决依赖的步骤:
- 拷贝yii2离线安装包中的vendor到moblog的根目录
- 修改moblog/web/admin.php中的调试模式为true
- 根据提示中的内容去github上搜索所需要的包,markdown的包是在npm网站找到的github地址。
从你的这个版本库clone下来的,一样是上面大家说的那个错误,看起来并没有解决的样子。
- Installation request for fxp/composer-asset-plugin v1.0.0-beta4 -> satisfiable by fxp/composer-asset-plugin[v1.0.0-beta4].
- fxp/composer-asset-plugin v1.0.0-beta4 requires composer-plugin-api 1.0.0 -> no matching package found.
观察者模式,与不用观察者模式相比,除了多写了一堆的代码,其他并没体现出什么好处。
具体以你讲的例子来说:
但是,当系统变大的时候,这种方法马上面临难以扩展的问题,并且容易出错。
比如老王不想订阅了,我们需要改源代码。
比如又增加了一个客户,我们要去改源代码。
比如xxx,我们都需要改源代码。
这两个对象的耦合度太高了。$model = new Video();
$model->attach(new LaoWang());
$model->attach(new XiaoLi());
$model->attach(new ChuanPu());
$model->attach(new BingBing());
$model->new();与
$model = new Video();
$model->new();
LaoWang::update($model);
XiaoLi::update($model);
ChuanPu::update($model);
BingBing::update($model);两个代码相比,
前者观察者模式,并没有解决上面作者自己所提出来的那些问题:有需求变动,还是要改代码的,如果仔细看看,反而是观察者模式情况下,改动的代码还要更多。
具体来说(还是借用作者的例子):
“当我们再增加一个人加入 习大大 的时候,我们只需要增加一个习大大的观察者类,在实现的时候添加注册,而不需要去改Video类和其他的观察者类,将类之间的耦合降低了很多”
这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。
那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的。不知道作者如何解释。
可以简单解释一下那一段rules是什么意思吗
补充一个我碰到的问题,给可能需要人参考:
使用
basic
模板创建app时,必须要在config/console.php
中设置authManager
使用rbac:'components' => [ 'db' => $db, 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], ],
否则,执行
yii migrate
的时候会报InvalidConfigException
异常:[jason@kali:/var/www/learn/basic]$ ./yii migrate --migrationPath=@yii/rbac/migrations Yii Migration Tool (based on Yii v2.0.6) Total 1 new migration to be applied: m140506_102106_rbac_init Apply the above migration? (yes|no) [no]:yes *** applying m140506_102106_rbac_init NULL Exception 'yii\base\InvalidConfigException' with message 'You should configure "authManager" component to use database before executing this migration.' in /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php:29 Stack trace: #0 /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php(36): m140506_102106_rbac_init->getAuthManager() #1 /var/www/learn/basic/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(492): m140506_102106_rbac_init->up() #2 /var/www/learn/basic/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(129): yii\console\controllers\BaseMigrateController->migrateUp('m140506_102106_...') #3 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0) #4 /var/www/learn/basic/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array) #5 /var/www/learn/basic/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array) #6 /var/www/learn/basic/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array) #7 /var/www/learn/basic/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array) #8 /var/www/learn/basic/vendor/yiisoft/yii2/console/Application.php(167): yii\base\Module->runAction('migrate', Array) #9 /var/www/learn/basic/vendor/yiisoft/yii2/console/Application.php(143): yii\console\Application->runAction('migrate', Array) #10 /var/www/learn/basic/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request)) #11 /var/www/learn/basic/yii(19): yii\base\Application->run() #12 {main}
注意:上面
*** applying m140506_102106_rbac_init
下面这行打印出来的NULL,是因为我调试过程中修改了代码,在第28行添加了输出:[jason@kali:/var/www/learn/basic]$ grep -n var_dump -C3 /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php 25- { 26- $authManager = Yii::$app->getAuthManager(); 27- if (!$authManager instanceof DbManager) { 28: var_dump($authManager); 29- throw new InvalidConfigException('You should configure "authManager" component to use database before executing this migration.'); 30- } 31- return $authManager;
@koko 对于
basic
模板的,配置文件要修改config/web.php
,同时也要修改config/console.php
。
不过,你写的是针对advanced
模板的,原文:注意:如果将yii2-admin配置在common目录下是全局生效,会导致控制台(console)下命令报错。
因为仅将权限控制应用于frontend模块,所以将配置写到frontend目录下。
配置文件:frontend\config\main.php- Jason571 评论了教程 yii2-admin 插件使用简要教程
补充一个我碰到的问题,给可能需要人参考:
使用
basic
模板创建app时,必须要在config/console.php
中设置authManager
使用rbac:'components' => [ 'db' => $db, 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], ],
否则,执行
yii migrate
的时候会报InvalidConfigException
异常:[jason@kali:/var/www/learn/basic]$ ./yii migrate --migrationPath=@yii/rbac/migrations Yii Migration Tool (based on Yii v2.0.6) Total 1 new migration to be applied: m140506_102106_rbac_init Apply the above migration? (yes|no) [no]:yes *** applying m140506_102106_rbac_init NULL Exception 'yii\base\InvalidConfigException' with message 'You should configure "authManager" component to use database before executing this migration.' in /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php:29 Stack trace: #0 /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php(36): m140506_102106_rbac_init->getAuthManager() #1 /var/www/learn/basic/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(492): m140506_102106_rbac_init->up() #2 /var/www/learn/basic/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(129): yii\console\controllers\BaseMigrateController->migrateUp('m140506_102106_...') #3 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0) #4 /var/www/learn/basic/vendor/yiisoft/yii2/base/InlineAction.php(55): call_user_func_array(Array, Array) #5 /var/www/learn/basic/vendor/yiisoft/yii2/base/Controller.php(151): yii\base\InlineAction->runWithParams(Array) #6 /var/www/learn/basic/vendor/yiisoft/yii2/console/Controller.php(91): yii\base\Controller->runAction('', Array) #7 /var/www/learn/basic/vendor/yiisoft/yii2/base/Module.php(455): yii\console\Controller->runAction('', Array) #8 /var/www/learn/basic/vendor/yiisoft/yii2/console/Application.php(167): yii\base\Module->runAction('migrate', Array) #9 /var/www/learn/basic/vendor/yiisoft/yii2/console/Application.php(143): yii\console\Application->runAction('migrate', Array) #10 /var/www/learn/basic/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request)) #11 /var/www/learn/basic/yii(19): yii\base\Application->run() #12 {main}
注意:上面
*** applying m140506_102106_rbac_init
下面这行打印出来的NULL,是因为我调试过程中修改了代码,在第28行添加了输出:[jason@kali:/var/www/learn/basic]$ grep -n var_dump -C3 /var/www/learn/basic/vendor/yiisoft/yii2/rbac/migrations/m140506_102106_rbac_init.php 25- { 26- $authManager = Yii::$app->getAuthManager(); 27- if (!$authManager instanceof DbManager) { 28: var_dump($authManager); 29- throw new InvalidConfigException('You should configure "authManager" component to use database before executing this migration.'); 30- } 31- return $authManager;
- Jason571 评论了教程 yii2-admin 插件使用简要教程
@koko 大神,麻烦提供下user表创建的SQL语句脚本呗
我看了你给的链接,里面有yii2安装过程的,这一步我做好了,yii2-admin也安装了,但是没有创建User表。yii2-admin
对user表的字段是否有要求?yii2-admin
是否需要这样的前提:登录验证部分已经修改为使用数据库验证?
谢谢!
假定你已经安装好了yii2,且数据库中创建了user表。具体安装步骤可见此文档。