Yii2错误:yii \ base \ UnknownMethodException:调用未知方法:yii \ web \ UrlManager :: addRules()

时间:2014-09-17 06:48:55

标签: composer-php yii2

今天更新了作曲家依赖关系(使用composer update命令)后,我的Yii2应用程序崩溃了 - 它抛出未知方法 - yii \ base \ UnknownMethodException:调用未知方法:yii \ web \ UrlManager :: addRules()< /强>

在检查 vendor / yiisoft / yii2 / web / UrlManager.php 文件后,我发现没有方法addRule。 整个类 UrlManager 与存储库中的类不同。

我的composer.json:

"minimum-stability": "dev",
"require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": "*",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "yiisoft/yii2-gii": "2.0.0-beta",
    "claudejanz/yii2-mygii": "*",
    "kartik-v/yii2-grid": "dev-master",
    "kartik-v/yii2-builder": "dev-master",
    "2amigos/yii2-switch-widget": "*",
    "yiisoft/yii2-jui": "*",
    "DsXack/yii2-underscore": "*",
    "2amigos/yii2-editable-widget": "*",
    "warrence/yii2-kartikgii": "*"
},
"require-dev": {
    "yiisoft/yii2-codeception": "*",
    "yiisoft/yii2-debug": "*"
},

6 个答案:

答案 0 :(得分:13)

我认为他们已经改变了通过作曲家加载某些库的方式。

要解决它:

添加到composer.json

 "extra": {
        "asset-installer-paths": {
            "npm-asset-library": "vendor/npm",
            "bower-asset-library": "vendor/bower"
        }
    }

并运行:

# php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"
# php composer.phar update --dev

更多信息:Issue on GithubIssue on Github

完全归功于:@githubjeka和@SonicGD

答案 1 :(得分:12)

Here解释了为什么会发生这种情况:

  

我认为这又是作曲家依赖解析器做出意想不到的事情:

     
      
  • 你的composer.json中需要yiisoft/yii2,但没有安装composer资产插件。
  •   
  • 然后依赖项解析程序找不到包含供应商bower-asset的包,因此它会查找没有冲突的其他版本的yiisoft/yii2
  •   
  • 结果是安装要安装的测试版yii2
  •   

如前所述,正确的解决方案是安装composer-asset-plugin

php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"

答案 2 :(得分:1)

似乎更新完全错误,因为文件与github上的文件不同 - 缺少几个函数。

我必须做些什么来摆脱&#34;摆脱&#34;这个错误:

从本地文件中的存储库中复制代码:

https://github.com/yiisoft/yii2/blob/master/framework/web/UrlManager.php

https://raw.githubusercontent.com/yiisoft/yii2/master/framework/helpers/BaseHtml.php

这暂时解决了我。

答案 3 :(得分:1)

像ricardgf说的那样,请阅读:

https://github.com/yiisoft/yii2/blob/master/docs/guide/start-installation.md

然后运行:

composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"

composer.phar update --prefer-source --no-interaction

答案 4 :(得分:1)

好吧我解决了以这种方式安装yii2的问题:

composer global需要“fxp / composer-asset-plugin:1.0。* @ dev”

composer create-project --prefer-dist --stability = dev yiisoft / yii2-app-basic basic

答案 5 :(得分:-4)

尝试按以下方式更新您的composer.json:

"require": {
    "yiisoft/yii2": "*"
},

在项目目录中,编写此命令 -

php composer.phar update