Path 使用;路径“;及;“资产”;对于非模板数据

Path 使用;路径“;及;“资产”;对于非模板数据,path,symfony,assets,Path,Symfony,Assets,使用细枝创建模板时,使用路径和资产功能很容易 <a href="{{ path('my_route') }}"><img src="{{ asset('bundles/acmedemo/my_image.png') }}" /></a> 然而,我的一些数据来自非细枝文件或数据库。从那里解决这些功能的正确方法是什么 到目前为止,我正在使用regex replace(preg\u replace\u callback)作为路径函数。但是有没有更好的方法呢?我

使用细枝创建模板时,使用
路径
资产
功能很容易

<a href="{{ path('my_route') }}"><img src="{{ asset('bundles/acmedemo/my_image.png') }}" /></a>

然而,我的一些数据来自非细枝文件或数据库。从那里解决这些功能的正确方法是什么


到目前为止,我正在使用regex replace(
preg\u replace\u callback
)作为路径函数。但是有没有更好的方法呢?

我很自豪地介绍我的第一个公共迷你项目,the。它几乎可以让您将捆绑包中的任何文件直接包含到模板中

安装程序 编辑现在可以使用composer安装捆绑包,请参阅上的说明

将以下内容添加到
deps

[KGStaticBundle]
    git=git://github.com/kgilden/KGStaticBundle.git
    target=bundles/KG/StaticBundle
运行
bin/vendors install

app/autoload.php
中注册名称空间:

'KG' => __DIR__.'/../vendor/bundles',
new KG\StaticBundle\KGStaticBUndle(),
app/AppKernel.php
中注册捆绑包:

'KG' => __DIR__.'/../vendor/bundles',
new KG\StaticBundle\KGStaticBUndle(),
基本用法 假设我们有一个文件
src/Acme/Bundle/DemoBundle/Static/hello.txt
准备好包含在模板中。我们必须使用
文件
函数:

{# src/Acme/Bundle/DemoBundle/Resources/views/Demo/index.html.twig #}

{{ file('@AcmeDemoBundle/Static/hello.txt') }}

逻辑名称被解析为实际路径,一个简单的
文件\u get\u contents
检索数据。

没有任何东西可以阻止您编写一个自定义函数,返回文件的相应路径。@affael1984:我不确定我的问题是否清楚-一些文本来自txt/html文件或数据库字符串/文本字段。我正在寻找一种解析这些文件的方法——也就是在需要的地方添加正确的路径——这可以被认为是一种正确的symfony2方法。最好的办法可能是创建几个细枝扩展。我明天会设法做点什么。@gilden:你有什么想法?类似于
{{content | parseExt}}
?这是绝对可能的,我的问题是这是否是一个“好”的方式。我肯定我不是第一个遇到这个问题的人。是的,这几乎就是我的想法,但是我想与其使用过滤器,不如使用函数:
{{file('@AcmeDemoBundle:Foo:index.txt')}
。该文件位于/src/Acme/Bundle/DemoBundle/Foo/index.txt,函数将把内容打印到模板中。我能想象的Symfony2中最优雅的解决方案:)不错。以同样的方式添加
asset\u contents
函数可能很有用。如何使用composer.json加载此函数?@JakeN刚刚更新了捆绑包,因此
composer require kgilden/static bundle
应该可以做到。太棒了!谢谢,这周我会试一试的。