Как использовать YUI-компрессор в роутере / контроллере Symfony2 - PullRequest
1 голос
/ 20 февраля 2012

Как использовать компрессор YUI со следующим сценарием:

routing.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'%}), но, к сожалению, не для выше.

Есть намеки? Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2012

На самом деле я не предлагаю вам делать это, потому что компрессор YUI JS будет загружаться при каждом запросе к ресурсу. Но это один из способов сделать это в любом случае.

Обратите внимание, что для простоты примера я исключил дополнительный код для правильного определения вашего веб-корня и местоположения файла JAR.

$path = $this->container->getParameter('kernel.root_dir');
$ac = new \Assetic\Asset\AssetCollection(array(
    new \Assetic\Asset\FileAsset($path . '/../src/WebBundle/Resources/public/js/jquery.longclick.js')
), array(
    new \Assetic\Filter\Yui\JsCompressorFilter($path . '/Resources/java/yuicompressor-2.4.7.jar')
));
$compressJS = $ac->dump();
return new Response($compressJS, 200, array('Content-Type' => 'text/javascript'));

Также обратите внимание, что вы не ограничены только FileAsset (). Доступны другие классы, такие как StringAsset () и т. Д., Поэтому вы можете динамически создавать контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...