Ошибка в коде с Yii2: базовый метод Yii\UnknownMethodException: вызов неизвестного метода: Yii веб\UrlManager::addRules()

после сегодняшнего обновления зависимостей composer (с командой composer update) мое приложение Yii2 стало сломанным-оно бросает неизвестный метод-yiibaseUnknownMethodException: вызов неизвестного метода: yiiwebUrlManager:: addRules ()

после осмотра поставщик / yiisoft/yii2/web / UrlManager.в PHP файл я обнаружил, что нет метода addRule. И весь класс UrlManager отличается от класса в хранилище.

мой композитор.в 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 ответов


здесь - это объяснение того, почему это произошло:

Я думаю, что это снова решатель зависимостей композитора, делающий неожиданные вещи:

  • требуются yiisoft/yii2 в свой композитор.JSON, но не установлен плагин Composer asset.
  • тогда распознаватель зависимостей не находит пакеты с поставщиком bower-asset поэтому он ищет другие версии yiisoft/yii2 которые не имеют конфликта
  • в результатом является установка бета-версии yii2 для установки

правильным решением, как уже упоминалось, является установка composer-asset-plugin:

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

Я думаю, что они изменили способ загрузки некоторых библиотек через 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

Подробнее: выпуск на Github и выпуск на Github

полный кредит: @githubjeka и @SonicGD


вроде обновление пошло совершенно неправильно, так как файлы отличаются от тех, что на GitHub - несколько функций отсутствует.

Что мне нужно было сделать, чтобы" избавиться " от этой ошибки:

скопировать код из репозитория в локальной файлы:

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

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

Это решило его на данный момент для меня.


Как говорит рикардгф, прочитайте это:

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


ok Я решил проблему установки yii2 таким образом:

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

композитор создать-проект-предпочитаю-Р --стабильность=Дев зависимостей коде с Yii2-приложения-основной базовый


попробуйте обновить композитор.json в следующий путь:

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

в папке проекта, напишите эту команду-

php composer.phar update