php - Symfony2 - 奏鸣曲和 KnpMenu - setCurrentUri

标签 php symfony sonata-admin symfony-sonata sonata-user-bundle

所以我想安装Sonata Admin BundleSonata User Bundle 。 根据他们的页面,AdminBundle requires KNPMenuBundle in version 2.* 所以我的 composer.json 看起来像这样:

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.6.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.2",
    "twig/extensions": "~1.0",
    "twbs/bootstrap": "~3",
    "components/jquery": "dev-master",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~3.0,>=3.0.12",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "1.3.*",
    "sonata-project/doctrine-orm-admin-bundle": "2.4.*@dev",
    "sonata-project/admin-bundle": "dev-master",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/user-bundle": "^2.2"
},

AppKernel.php像这样

$bundles = [
    new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
    new Symfony\Bundle\SecurityBundle\SecurityBundle(),
    new Symfony\Bundle\TwigBundle\TwigBundle(),
    new Symfony\Bundle\MonologBundle\MonologBundle(),
    new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
    new Symfony\Bundle\AsseticBundle\AsseticBundle(),
    new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
    new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
    new My\ProductBundle\MyPdBundle(),
    new FOS\UserBundle\FOSUserBundle(),
    new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
    new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(),
    new Sonata\CoreBundle\SonataCoreBundle(),
    new Sonata\BlockBundle\SonataBlockBundle(),
    new Knp\Bundle\MenuBundle\KnpMenuBundle(),
    new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),

    new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
    new Sonata\AdminBundle\SonataAdminBundle(),
    ];

但是当我尝试访问 mypage.local/app_dev.php/profile 时,出现此错误:

Attempted to call method "setCurrentUri" on class "Knp\Menu\MenuItem".
Did you mean to call "setCurrent"?
500 Internal Server Error - UndefinedMethodException

in vendor/sonata-project/user-bundle/Block/ProfileMenuBlockService.php at line 91
$menu->setCurrentUri($settings['current_uri']);

堆栈中有很多信息表明 Sonata 在 1.3 版本中需要 KnpMenuBundle 但正如我所写,在 dev-master bramch Sonata 中需要版本 2 中的 KnpMenuBndle。*

最佳答案

我终于明白了!

如果您想使用 Sonata AdminPanel 和 Sonada UserPanel(带有 FOSUserBundle),这里是工作配置:

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.6.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.2",
    "twig/extensions": "~1.0",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~3.0,>=3.0.12",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "1.3.*@dev",
    "sonata-project/block-bundle": "2.3.*@dev",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/datagrid-bundle": "~2.2@dev",
    "sonata-project/admin-bundle": "~2.3@dev",
    "sonata-project/doctrine-orm-admin-bundle": "~2.3@dev",
    "stof/doctrine-extensions-bundle": "~1.1@dev",
    "sonata-project/user-bundle": "~2.3@dev"
},

您可以使用1.3版本的FOSUserBundle,但2.1版本仅支持SF2。 FOS 1.3.* 在 2.6 版本中支持 SF2。

"friendsofsymfony/user-bundle": "1.3.*@dev"

关于php - Symfony2 - 奏鸣曲和 KnpMenu - setCurrentUri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347214/

相关文章:

php - 使用 PHP 匿名类进行测试和模拟

php - 为什么 1024 * 1024 * 1024 * 1024 * 1024 返回 float ?

php从两个数组创建html表,mysql查询产生额外的单元格

symfony - EasyAdmin 3.X - 如何查看相关实体 `toString` 而不是列表中的关联数量?

php - 如何在 sonata admin Admin Controller 中设置 flash 消息

symfony - Sonata Admin Bundle 类型集合自定义

php - 我可以在 Sonata Admin Controller 中使用 prePersist/preUpdate 来持久化多个对象吗?

php - 多个 php 类(Symfony Controller )可访问的函数

php - Symfony3 : Set Session Attribute with AJAX

symfony - 在 Symfony ApiPlatform 中拥有同一类的属性