Symfony:渲染块时出错 - 无法找到模板

Symfony: error while rendering block - Unable to find template

我正在使用 Sonata 的 block bundle 和 Symfony 3.3 开发应用程序。我已经配置了一个块服务来显示 YouTube 视频。

该服务包含以下代码:

    $blockContext->setSetting('template', 'AppBundle:Components:videoElement.html.twig');
    return $this->renderResponse($blockContext->getTemplate(), array(
        'block' => $block,
        'settings' => $settings,
        'media' => $media,
        'framehtml' => $frameHtml,
        'provider_reference' => $providerReference,

    ), $response);

当我在笔记本电脑上使用该服务时,它运行良好。当我切换到另一个环境时,视频不再显示,并且出现以下错误:

[2018-04-05 11:24:23] app.ERROR: [cms::renderBlock] block.id=13 - error while rendering block - Unable to find template "AppBundle:Components:videoElement.html.twig" (looked into: /srv/htdocs/vgms-core/app/Resources/views, /srv/htdocs/vgms-core/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form, /srv/htdocs/vgms-core/vendor/knplabs/knp-menu/src/Knp/Menu/Resources/views). {"exception":"[object] (InvalidArgumentException(code: 0): Unable to find template \"AppBundle:Components:videoElement.html.twig\" (looked into: /srv/htdocs/vgms-core/app/Resources/views, /srv/htdocs/vgms-core/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form, /srv/htdocs/vgms-core/vendor/knplabs/knp-menu/src/Knp/Menu/Resources/views). at /srv/htdocs/vgms-core/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:127, Twig_Error_Loader(code: 0): Unable to find template \"AppBundle:Components:videoElement.html.twig\" (looked into: /srv/htdocs/vgms-core/app/Resources/views, /srv/htdocs/vgms-core/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form, /srv/htdocs/vgms-core/vendor/knplabs/knp-menu/src/Knp/Menu/Resources/views). at /srv/htdocs/vgms-core/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:232)"} []

模板存在于 src/AppBundle/Resources/views/components/videoElement.html.twig.

我怎样才能明确地告诉 Symfony 在哪里寻找这个模板?

Referencing Templates in a Bundle (Symfony 3.3 version) 所示,您可以使用 Twig 语法 @BundleName/directory/filename.html.twig 指定特定包模板所在的位置。

默认情况下,特定的捆绑包模板存储在 BundleName/Resources/views 文件夹中,可以使用 @App/videoElement.html.twig 进行引用,因此在您的情况下,您只需用 @App/components/videoElement.html.twig.