【问题标题】:Symfony: error while rendering block - Unable to find templateSymfony:渲染块时出错 - 找不到模板
【发布时间】:2018-09-15 01:55:12
【问题描述】:

我正在使用 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 - 渲染块时出错 - 找不到模板 “AppBundle:Components:videoElement.html.twig”(调查: /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)。 {“异常”:“[对象](InvalidArgumentException(代码:0):无法 找到模板 \"AppBundle:Components:videoElement.html.twig\" (看了 进入:/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)。 在 /srv/htdocs/vgms-core/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:127, Twig_Error_Loader(代码:0):找不到模板 \"AppBundle:Components:videoElement.html.twig\"(调查: /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)。 在 /srv/htdocs/vgms-core/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:232)"} []

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

我如何明确告诉 Symfony 在哪里寻找这个模板?

【问题讨论】:

  • AppBundleapp/Resources/views 中的模板在哪里?
  • 谢谢,gp_sflover -- 成功了。我使用@App/components/videoElement.html.twig 访问了我的模板,这成功了。如果您想将此扩展为答案,我会将其标记为已接受。

标签: php symfony sonata-admin symfony-3.3


【解决方案1】:

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 指示添加的components 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多