Сбой вызова метода 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
Кто-нибудь сталкивался с этой ошибкой раньше и может предоставить информацию о том, как ее устранить?
ТИА Мэтт
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"
},
...
}
Я столкнулся с той же проблемой, но переход на 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!
У меня была та же проблема, это мое решение, которое вы можете сохранить KnpMenu V2.
-Вы измените setCurrentUri на setCurrent (потому что KNP изменил код) в C: \ path \ vendor \ sonata-project \ user-bundle \ Block \ ProfileMenuBlockService.php
-Вы можете иметь эту проблему, метод "currentAncestor" для объекта "Knp\Menu\MenuItem" не существует в сонате
И это работает для меня.