Сбой вызова метода 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" не существует в сонате

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

Другие вопросы по тегам