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
.
我正在使用 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
.