Dynamically setting the BaseUrl within configuration in Symfony2

梦想的初衷 提交于 2019-12-23 10:07:36

问题


I know that within Symfony2's configuration, there is no reference to the base url, as there is no request; the application could either run in cli or within a web server, and therefore we cannot rely on request. But still, I have configuration that asks for stylesheets or javascript base url (such as the JQueryHelperBundle, where you can set your jquery local path - being the local url). The thing is, is there a way to dynamically set a base url for the configuration, without having to change it so that:

  • The application can move from any directory under development, whether www/myproject or www/foo/myproject without having to change the settings
  • Production would work the same, except that rewriting the base url with apache would be detected (virtualhosting is common, where the baseurl is mapped to the web directory as '/').

Is there a way to get that base url information? Would using the difference between $_SERVER['DOCUMENT_ROOT'] minus the kernel root dir be a way to detect such base url? But what about virtualhost rebasing the url to / on the web directory? Hardcoding the base url completely couples the project to where it stands in development, and moving project around would require to change the base url everytime, which is annoying.

So, is there a way to dynamically detect the base url within Symfony2's configuration, according to the environment, without depending on the request?


回答1:


I had to do that in a service, so I injected the router service in my own service and then:

$baseUrl = $router->getContext()->getHost();

But I considered it more as an hack that a real fixture of Symfony2 framework. For instance, in Controller you can generate absolute url easily (example from the symfony book):

$router->generate('blog_show', array('slug' => 'my-blog-post'), true);

And in the twig template, you have the {{ url }} function

I hope this help



来源:https://stackoverflow.com/questions/6381809/dynamically-setting-the-baseurl-within-configuration-in-symfony2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!