我刚刚尝试使用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。我也试过清除我的缓存而没有任何结果......
答案 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()