在 Symfony/SonataUserBundle 设置中调用方法 setCurrentUri 失败
Posted
技术标签:
【中文标题】在 Symfony/SonataUserBundle 设置中调用方法 setCurrentUri 失败【英文标题】:Call to method setCurrentUri fails in Symfony/SonataUserBundle setup 【发布时间】: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 马特
【问题讨论】:
【参考方案1】:您使用的是什么版本的KnpMenu
和SonataBlockBundle
?请确认您的composer.json
。
setCurrentUri
方法自 KnpMenu
v. 2.0 起已弃用,SonataBlockBundle
的 composer.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
这对我有用。
【讨论】:
以上是关于在 Symfony/SonataUserBundle 设置中调用方法 setCurrentUri 失败的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?