Это решение stackoverflow почти отвечает на мой вопрос. Но я хочу генерировать URL-адреса CDN в Twig
больше, чем просто ресурсы. Я бы хотел создать их для динамического контента. Поэтому я не думаю, что Assetic tweak – это подходящая область для поиска.
На данный момент я могу установить CDN_url в parameters.ini
и использовать это в моих URL-адресах. Мой код будет выглядеть так: {{CDN_Url}}{{url('route',{'param1':'value'}}
.. Обслуживание кода – одна из основных причин, по которым мне не нравится этот параметр. такие вещи, как проверка маршрута для /cdn/
для генерации URL- /cdn/
CDN и всего остального, основанного на домене. Мне не пришлось бы запускать изменение большого количества переменных. И если бы я хотел остановить создание CDN-url. Я мог бы просто изменить маршрут. Таким образом, есть много преимуществ, чтобы выяснить, есть ли для этого чистое решение.
Если уже нет решения – как бы я начал расширять функциональность {{ url() }}
чтобы использовать его как path
и url
.
Вы можете сделать это с помощью связанного с вами вопроса следующим образом
{{ asset(path('route',{'param1':'value'})) }}
Если вам нужно обрабатывать несколько доменов CDN, вы можете сделать это следующим образом
В app/config.yml
# app/config.yml #.... templating: engines: ['twig'] packages: cdn1: base_urls: ["http://cdn1.domain.com"] cdn2: base_urls: ["http://cdn2.domain.com"]
И затем в вашем файле шаблона twig
{{ asset('path/of/file', 'cdn1')
ИЛИ
{{ asset('path/of/file', 'cdn2')
Я не знаю о материалах CDN, но, расширяя функцию url, взгляните на:
Symfony \ Мост \ Twig \ Extension \ RoutingExtension
public function __construct(UrlGeneratorInterface $generator) { $this->generator = $generator; } public function getFunctions() { return array( 'url' => new \Twig_Function_Method($this, 'getUrl'), 'path' => new \Twig_Function_Method($this, 'getPath'), ); } public function getPath($name, $parameters = array()) { return $this->generator->generate($name, $parameters, false); } public function getUrl($name, $parameters = array()) { return $this->generator->generate($name, $parameters, true); }
Таким образом, вы можете получить getUrl там, или вы можете вставить свой собственный UrlGenerator. Не уверен, что было бы проще в вашем конкретном случае. Возможно создание собственного UrlGenerator.