块类型" sonata.admin.block.admin_list"不存在

时间:2015-07-22 15:21:01

标签: php symfony sonata-admin symfony-cmf

我刚刚尝试使用Sonata Admin捆绑软件安装Symfony CMF,但是在启用它时遇到了一些问题。显然我不是第一个,但其他答案并没有让我感到非常不幸。

这是我的完全例外:

  

在SonataAdminBundle:Core:仪表板中呈现模板("块类型" sonata.admin.block.admin_list"不存在")期间抛出了异常。第35行的html.twig。

这是我的AppKernel.php:

$bundles = array(
    // Symfony Standard Edition 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(),

    // Symfony CMF Standard Edition Bundles
    new Doctrine\Bundle\PHPCRBundle\DoctrinePHPCRBundle(),
    new Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle(),
    new Symfony\Cmf\Bundle\CoreBundle\CmfCoreBundle(),
    new Symfony\Cmf\Bundle\ContentBundle\CmfContentBundle(),
    new Symfony\Cmf\Bundle\RoutingBundle\CmfRoutingBundle(),
    new Symfony\Cmf\Bundle\SimpleCmsBundle\CmfSimpleCmsBundle(),

    new Symfony\Cmf\Bundle\BlockBundle\CmfBlockBundle(),
    new Sonata\BlockBundle\SonataBlockBundle(),
    new Sonata\CoreBundle\SonataCoreBundle(),

    new Symfony\Cmf\Bundle\MenuBundle\CmfMenuBundle(),
    new Knp\Bundle\MenuBundle\KnpMenuBundle(),

    new Symfony\Cmf\Bundle\CreateBundle\CmfCreateBundle(),
    new FOS\RestBundle\FOSRestBundle(),
    new JMS\SerializerBundle\JMSSerializerBundle(),

    new Sonata\jQueryBundle\SonatajQueryBundle(),
    new Sonata\DoctrinePHPCRAdminBundle\SonataDoctrinePHPCRAdminBundle(),
    new Sonata\AdminBundle\SonataAdminBundle(),

    // Remove this Bundle when using the SE as the basis for a new project
    new Acme\DemoBundle\AcmeDemoBundle(),
);

我的相关config.yml部分:

# Sonata
sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
          contexts: [admin]
        sonata.user.block.menu:
        sonata.user.block.account:
        sonata.block.service.text:

最后我的路线:

admin:
    resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
    prefix: /admin

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /admin

任何帮助将不胜感激,我相信我已经完成了指示,我唯一的改变是将我的IP添加到app_dev.php。我也试过清除我的缓存而没有任何结果......

2 个答案:

答案 0 :(得分:0)

该错误表明您的sonata_block配置未被读取或者可能被覆盖。

你能否在一个配置文件(config * .yml)中检查它是否有重复的定义?

答案 1 :(得分:0)

我在这方面打了一会儿,通过在Sonata\BlockBundle\Block\BlockLoaderChain::load()中添加块加载器的调试转储,我能够看到我的块加载器默认返回true { {1}}。这超过了Sonata服务加载器,它应该是支持(和加载)该块的服务加载器。装载机:

if ($loader->support($block)) {...

原因是我的加载程序正在扩展array:2 [▼ 0 => BlockLoader {#617 ▼ #entityManager: DoctrineORMEntityManager_000000005e8b2927000000004be687142a8746960d6f2b18cb3522b67eef8a8d {#208 …2} #types: array:3 [▼ 0 => "cmf.block.action" 1 => "cmf.block.container" 2 => "cmf.block.simple" ] } 1 => ServiceLoader {#618 ▼ #types: array:1 [▼ 0 => "sonata.admin.block.admin_list" ] } ] ,而ServiceLoader只是检查块元数组是否包含'类型'。

所以我将自己的->support($block)方法添加到我的块加载器中,现在它只支持我定义的类型。这是整个装载机:

support()