Jason571

Jason571

这家伙有点懒,还没写个性签名!

  • 财富值40
  • 威望值0
  • 总积分100

个人信息

  • 用的phpstudy,在cmd各种尝试没成功,换到Linux里面,就发现了问题。
    linux终端就是这点好,重点会给你标出来。

    composer update

    即可轻松搞定

    TIM截图20180729102836.jpg

    附: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

    另附上解决依赖的步骤:

    1. 拷贝yii2离线安装包中的vendor到moblog的根目录
    2. 修改moblog/web/admin.php中的调试模式为true
    3. 根据提示中的内容去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类和其他的观察者类,将类之间的耦合降低了很多”

    这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。

    那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
    上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的

    不知道作者如何解释。

  • 回复了 的回答

    Yii最大的败笔就是封装前端功能,自定义、扩展差

    你要是实在想用的话则只能手动填写相关form input的options属性,其实这样一来还不如你复制这个代码块。

    我不了解其他框架,目前只用过Yii1和Yii2,不知道其他框架是怎么处理这个问题的 是不是也都不管前端资源的事情,那么是不是也就没法实现类似ActiveForm所提供的那些自动化验证的方便功能

  • 可以简单解释一下那一段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;
    

    对于basic模板的,配置文件要修改config/web.php,同时也要修改config/console.php
    不过,你写的是针对advanced模板的,原文:

    注意:如果将yii2-admin配置在common目录下是全局生效,会导致控制台(console)下命令报错。
    因为仅将权限控制应用于frontend模块,所以将配置写到frontend目录下。
    配置文件:frontend\config\main.php

  • 补充一个我碰到的问题,给可能需要人参考:

    使用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;
    
  • 大神,麻烦提供下user表创建的SQL语句脚本呗
    我看了你给的链接,里面有yii2安装过程的,这一步我做好了,yii2-admin也安装了,但是没有创建User表。

    • yii2-admin对user表的字段是否有要求
    • yii2-admin是否需要这样的前提:登录验证部分已经修改为使用数据库验证?

    谢谢!

    假定你已经安装好了yii2,且数据库中创建了user表。具体安装步骤可见此文档。

助理 等级规则
100/200
资料完整度
10/100
用户活跃度
0/100

Ta的关注

3

Ta的粉丝

1

Ta的访客

3