【问题标题】:Call to method setCurrentUri fails in Symfony/SonataUserBundle setup在 Symfony/SonataUserBundle 设置中调用方法 setCurrentUri 失败
【发布时间】:2014-10-01 01:32:05
【问题描述】:

我正在尝试使用 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 马特

【问题讨论】:

    标签: symfony sonata-user-bundle knpmenubundle


    【解决方案1】:

    您使用的是什么版本的KnpMenuSonataBlockBundle?请确认您的composer.json

    setCurrentUri 方法自 KnpMenu v. 2.0 起已弃用,SonataBlockBundlecomposer.json 不需要 KnpMenu 任何地方,但在 dev 安装中。因此,这可能导致您可能需要新版本的 knplabs/knp-menu-bundle,但 Sonata 捆绑包尚不支持。

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

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

    【讨论】:

    • 成功了。使用:"knplabs/knp-menu": "~1.1", "knplabs/knp-menu-bundle": "~1.1"
    【解决方案2】:

    我遇到了同样的问题,但我们的项目无法降级到 Knpmenu 版本 1。由于some code update the June 16th,现在可以使用 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 的开发者有所帮助!

    【讨论】:

      【解决方案3】:

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

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

      -你可以有这个问题,Method "currentAncestor" for object "Knp\Menu\MenuItem" does not exist in Sonata

      这对我有用。

      【讨论】:

        猜你喜欢
        • 2015-04-20
        • 1970-01-01
        • 2018-06-12
        • 2019-02-08
        • 2018-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多