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

Composer php Yii2错误:yii\base\UnknownMethodException:调用未知方法:yii\web\UrlManager::addRules(),composer-php,yii2,Composer Php,Yii2,今天更新了composer依赖项(使用composer update命令)后,我的Yii2应用程序出现故障-它抛出未知方法–yii\base\UnknownMethodException:调用未知方法:yii\web\UrlManager::addRules() 检查完vendor/yiisoft/yii2/web/UrlManager.php文件后,我发现没有addRule方法。 整个类UrlManager与存储库中的类不同 My composer.json: "minimum-stabili

今天更新了composer依赖项(使用composer update命令)后,我的Yii2应用程序出现故障-它抛出未知方法–yii\base\UnknownMethodException:调用未知方法:yii\web\UrlManager::addRules()

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

My 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": "*"
},

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

"require": {
    "yiisoft/yii2": "*"
},
在项目目录中,编写以下命令-

php composer.phar update

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

我必须做什么才能“摆脱”这个错误:

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


这为我暂时解决了这个问题。

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

要解决这个问题:

添加到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
更多信息:和


完全归功于:@githubjeka和@SonicGD

就像里卡德格夫说的那样,请阅读以下内容:

然后运行:

composer.phar全局要求“fxp/composer资产插件:1.0.*@dev”

composer.phar更新--首选源代码--无交互

解释了发生这种情况的原因:

我认为这又是编写器依赖项解析器做了一些意想不到的事情:

  • 您需要composer.json中的
    yiisoft/yii2
    ,但未安装composer资产插件
  • 然后,依赖项解析程序找不到具有供应商
    bower资产的包
    ,因此它会查找没有冲突的
    yiisoft/yii2
    的其他版本
  • 其结果是安装要安装的yii2的beta版
如前所述,正确的解决方案是安装:


好的,我通过以下方式解决了安装Yi2的问题:

composer global需要“fxp/composer资产插件:1.0.*@dev”


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

在将kartik-v小部件添加到require部分后调用“composer update”后,我遇到了完全相同的问题。仍在试图弄清楚发生了什么:(谢谢,我希望他们也能解决我的问题..但他们在文档中说..不要在生产中使用..现在我们知道了原因:Deven如果从github复制文件解决了问题,正确的解决方案是安装composer asset插件。因此,请将其中一个答案标记为建议将插件安装为解决方案,而不是此解决方案。好的,我是figu在你的yiisoft/yii2/web/UrlManager.php中没有addRules($rules,$append=true)函数。奇怪!!+1当然。我以前在Github上没有找到它:(我已经这样做了,但是我的问题仍然没有解决,仍然说csrf元标记错误
php composer.phar global require "fxp/composer-asset-plugin:1.0.*@dev"