pat*_*man 5 templates symfony twig
我刚开始学习如何使用 Symfony,我认为这很简单,但我对模板引擎有一点问题。我想在 Symfony ( 2.5.6
)中的一个树枝模板中包含一个静态 HTML 片段。现在我在资源目录中创建了一个静态子文件夹(这可能会改变,但它绝对不会在视图文件夹中)。但是我无法完成这项工作,我总是以unable to find template
错误告终。我发现关于这个主题的文档有点稀疏(参见http://symfony.com/doc/current/book/templating.html#include-other-templates)而且树枝文档也无法帮助我解决这个问题。我什至不确定我是否可以使用神奇的 @Bundle 表示法,或者我是否必须驻留在视图文件夹中,因为../
include 标记中不允许使用表示法。
我尝试了以下(以及一些变体):
{{ include('@FashionMediaBundle/Resources/static/pricing.html') }}
Run Code Online (Sandbox Code Playgroud)
我猜 symfony 无法处理包含中的原始 html,但我也可以使用没有任何模板标签的 php 模板,所以问题只是如何指定视图文件夹之外的位置。
我知道http://github.com/kgilden/KGStaticBundle可能会解决我的问题,但我无法相信默认配置无法实现。
编辑:我只是尝试从同一目录中包含一个常规模板文件,仅指定模板文件的名称(如文档中所做的那样,请参见上面的链接)。我仍然收到一个错误,抱怨它期望bundle:section:template.format.engine
作为它的格式。文档中是否有错误?
看来发帖者在我打字时找到了解决方案。我想我会把它留在这里一会儿。
这里讨论创建和使用 twig 命名空间:http://symfony.com/doc/current/cookbook/templated/namespaced_paths.html
默认情况下,每个包都有自己的命名空间,指向视图目录。您可以通过调整 app/config.yml 添加其他目录
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
paths:
"%kernel.root_dir%/../../cerad2/src/Cerad/Bundle/FashionMediaBundle/Resources/static": FashionMedia
Run Code Online (Sandbox Code Playgroud)
使用以下内容加载模板:“@FashionMedia/pricing.html”
我不会详细介绍所有细节,但您也可以使用编译器通行证(http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html)从捆绑包本身添加其他路径,而无需调整config.yml:
class Pass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$bundleDirAction = $container->getParameter('cerad_api01__bundle_dir') . '/Action';
$twigFilesystemLoaderDefinition = $container->getDefinition('twig.loader.filesystem');
$twigFilesystemLoaderDefinition->addMethodCall('addPath', array($bundleDirAction, 'CeradApi01'));
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3498 次 |
最近记录: |