2014-02-21 63 views
0

如何通过类中的过滤器(闭合)呈现资产,而无需外部人员看到文件(即不将文件放置在web文件夹中)。应该是可能的,因为Assetic能够做到这一点。Symfony2以编程方式呈现资产并以字符串形式呈现

我已经看了资产代码,但我无法弄清楚如何做到这一点。

+0

因此,您希望将资产提供给网络用户,而不必将文件放入网络目录中?想想 – JamesHalsall

+0

这是一个包含API密钥的脚本。但它必须尽可能小。该脚本将通过树枝渲染并缓存。但原始脚本和已编译的'* .js.twig'脚本确实不可见。 – jeroenvisser101

回答

0

Kris Wallsmith(资产的制造者)帮助我做到了这一点,并帮助我朝着正确的方向前进。

$asset = new FileAsset(__DIR__ . '/../Resources/assets/script.js'); 
$closureFilter = new CompilerJarFilter(
    $this->getContainer()->get('kernel')->getRootDir() . '/Resources/java/compiler.jar' 
); 
$closureFilter->setCompilationLevel(CompilerJarFilter::COMPILE_ADVANCED_OPTIMIZATIONS); 
$asset->ensureFilter($closureFilter); 
$script = $asset->dump();