如何在Symfony2路由/控制器中使用YUI压缩机

如何在Symfony2路由/控制器中使用YUI压缩机,symfony,yui,Symfony,Yui,如何在以下情况下使用YUI压缩机: 路由.yml js_route: pattern: /foo/bar.{_format} defaults: { _controller: FooBundle:Default:JS } requirements: _format: js DefaultController.php public function JSAction() { // ... // content for JS file is being

如何在以下情况下使用YUI压缩机:

路由.yml

js_route:
   pattern:  /foo/bar.{_format}
   defaults: { _controller: FooBundle:Default:JS }
   requirements:
       _format: js
DefaultController.php

public function JSAction() {
   // ...
   // content for JS file is being generated
   // ...
   return $this->render('FooBundle:Default:bar.js.twig', $returnarray);
   // ...
}
我知道如何在我的小树枝模板中使用它(例如{%javascripts'@FooBundle/Resources/public/js/*'filter='?yui_js'%}),但不幸的是,上面没有


有什么提示吗?谢谢

我并不建议您这样做,因为YUI JS压缩器将在对资源的每个请求上加载。但无论如何,这是一种方法

注意,为了使示例保持简单,我排除了任何额外的代码来正确确定您的web根目录和jar文件的位置

$path=$this->container->getParameter('kernel.root_dir');
$ac=new\Assetic\Asset\AssetCollection(数组)(
新建\Assetic\Asset\FileAsset($path.'/../src/WebBundle/Resources/public/js/jquery.longclick.js'))
),数组(
新建\Assetic\Filter\Yui\JsCompressorFilter($path.'/Resources/java/yuicompressor-2.4.7.jar'))
));
$compressJS=$ac->dump();
返回新的响应($compressJS,200,array('Content-Type'=>'text/javascript');
还要注意,您不仅限于FileAsset()。还有其他类可用,如StringAsset()等,因此您可以动态构建内容