Call to method setCurrentUri fails in Symfony/SonataUserBundle setup

假如想象 提交于 2019-12-01 15:50:24

What versions of KnpMenu and SonataBlockBundle are you using? Please check your composer.json to be sure.

The setCurrentUri method has been deprecated as of KnpMenu v. 2.0, and the composer.json of SonataBlockBundle does not require KnpMenu anywhere but in dev install. So, this leads to a possibility that you could have required a fresher version of knplabs/knp-menu-bundle that is not yet supported by Sonata bundle.

Try requiring knplabs/knp-menu-bundle in 1.1.x:

{
    ...
    "require": {
        "knplabs/knp-menu-bundle": "~1.1"
    },
    ...
}

I encountered the same problem, but downgrade to Knpmenu version 1 is not possible for our project. Because of some code update the June 16th, it is now possible to use Sonata User Bundle and Knp Menu Version 2.

Please, have a look on my 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"
},

As you can see, sonata-project/user-bundle is under dev-master version and I had to add sonata-project/datagrid-bundle in dev-master

Hope to help developpers who want want to preserve KnpMenu V2 !

Antoine V

I had same issue, This is my solution that you can preserve KnpMenu V2.

-You change setCurrentUri to setCurrent (because KNP changed code) in C:\path\vendor\sonata-project\user-bundle\Block\ProfileMenuBlockService.php

-You can have this problem, Method "currentAncestor" for object "Knp\Menu\MenuItem" does not exist in Sonata

And this works for me.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!