Ошибка вызова метода setCurrentUri в настройке Symfony/SonataUserBundle

Я пытаюсь настроить Symfony с помощью SonataUserBundle. Регистрация пользователей и вход в систему работают нормально. Когда я пытаюсь вызвать представление /profile, я получаю следующую ошибку:

Attempted to call method "setCurrentUri" on class "Knp\Menu\MenuItem" in F:\<my project path>\vendor\sonata-project\user-bundle\Block\ProfileMenuBlockService.php line 91. Did you mean to call: "setCurrent"?

Последнее уведомление в «списке событий» перед ошибкой.

INFO - [cms::renderBlock] block.id=53, block.type=sonata.user.block.menu

Кто-нибудь сталкивался с этой ошибкой раньше и может предоставить информацию о том, как ее решить?

ТИА Мэтт


person matt_jay    schedule 07.08.2014    source источник


Ответы (3)


Какие версии KnpMenu и SonataBlockBundle вы используете? Пожалуйста, проверьте свой composer.json, чтобы убедиться.

Метод setCurrentUri устарел, начиная с KnpMenu v. 2.0, а composer.json из SonataBlockBundle не требует KnpMenu нигде, кроме установки dev. Таким образом, это приводит к тому, что вам могла потребоваться более свежая версия knplabs/knp-menu-bundle, которая еще не поддерживается пакетом Sonata.

Попробуйте потребовать knplabs/knp-menu-bundle в 1.1.x:

{
    ...
    "require": {
        "knplabs/knp-menu-bundle": "~1.1"
    },
    ...
}
person kix    schedule 11.08.2014
comment
Это помогло. Использование: "knplabs/knp-menu": "~1.1", "knplabs/knp-menu-bundle": "~1.1" - person matt_jay; 11.08.2014

Я столкнулся с той же проблемой, но переход на Knpmenu версии 1 для нашего проекта невозможен. Из-за некоторого обновления кода от 16 июня, теперь можно использовать Sonata User Bundle и Knp Menu Version 2.

Пожалуйста, взгляните на мой composer.json:

"require": {
    "php": ">=5.3.9",
    "symfony/symfony": "2.7.*",
    "doctrine/orm": "^2.4.8",
    "doctrine/doctrine-bundle": "~1.4",
    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "doctrine/migrations": "dev-master",
    "doctrine/doctrine-migrations-bundle": "dev-master",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~4.0",
    "sensio/framework-extra-bundle": "^3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "~1.3",
    "friendsofsymfony/message-bundle": "^1.2",
    "sonata-project/admin-bundle": "^2.3",
    "sonata-project/doctrine-orm-admin-bundle": "^2.3",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/user-bundle": "dev-master",
    "sonata-project/datagrid-bundle": "dev-master",
    "sonata-project/block-bundle": "~2.2,>=2.2.7,<2.3",
    "sonata-project/exporter": "^1.4",
    "sonata-project/intl-bundle": "^2.2",
    "knplabs/knp-menu-bundle": "~2.0",
    "knplabs/knp-menu": "~2.0"
},

Как видите, sonata-project/user-bundle находится в версии dev-master, и мне пришлось добавить sonata-project/datagrid-bundle в dev-master.

Надеемся помочь разработчикам, которые хотят сохранить KnpMenu V2!

person Alexandre Tranchant    schedule 29.10.2015

У меня была такая же проблема, это мое решение, что вы можете сохранить KnpMenu V2.

-Вы меняете setCurrentUri на setCurrent (потому что KNP изменил код) в C:\path\vendor\sonata-project\user-bundle\Block\ProfileMenuBlockService.php

-У вас может быть эта проблема, Method currentAncestor для объекта Knp\Menu\MenuItem не существует в Sonata

И это работает для меня.

person Antoine V    schedule 20.04.2016