9

我正在尝试使用 SonataUserBundle 设置 Symfony。用户注册和登录工作正常。当我尝试调用/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

有没有人遇到过这个错误并且可以提供如何解决它的信息?

TIA 马特

4

3 回答 3

15

您使用的是KnpMenu什么版本?SonataBlockBundle请检查您composer.json的确定。

从v. 2.0开始,该setCurrentUri方法已被弃用,并且除了安装之外不需要任何地方。因此,这导致您可能需要Sonata 捆绑包尚不支持的更新版本。KnpMenucomposer.jsonSonataBlockBundleKnpMenudevknplabs/knp-menu-bundle

尝试knplabs/knp-menu-bundle要求1.1.x

{
    ...
    "require": {
        "knplabs/knp-menu-bundle": "~1.1"
    },
    ...
}
于 2014-08-11T05:14:51.293 回答
1

我遇到了同样的问题,但我们的项目无法降级到 Knpmenu 版本 1。由于6 月 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 版本下,我必须在 dev-master 中添加 sonata-project/datagrid-bundle

希望对想要保留 KnpMenu V2 的开发者有所帮助!

于 2015-10-29T07:19:35.080 回答
0

我有同样的问题,这是我可以保留 KnpMenu V2 的解决方案。

-您在 C:\path\vendor\sonata-project\user-bundle\Block\ProfileMenuBlockService.php 中将 setCurrentUri 更改为 setCurrent(因为 KNP 更改了代码)

- 你可能会遇到这个问题,对象“Knp\Menu\MenuItem”的方法“currentAncestor”在奏鸣曲中不存在

这对我有用。

于 2016-04-20T14:54:10.047 回答