Symfony:在开发环境中生成产品url

Symfony:在开发环境中生成产品url,symfony,routing,Symfony,Routing,我想知道在使用symfony路由组件生成URL时是否可以选择环境 在控制器中 $this->generateUrl($route, $params); 在产品环境中生成/,在开发环境中生成/app\u dev.php 似乎没有环境参数,因此您可以在开发环境中生成有效的URL。我只是不想一直用str_替换之类的东西 这太好了: $this->generateUrl($route, $params, 'prod'); 为了您的理解,我正在进行一个cms项目,在这个项目中,我必须将UR

我想知道在使用symfony路由组件生成URL时是否可以选择环境

在控制器中

$this->generateUrl($route, $params);
在产品环境中生成
/
,在开发环境中生成
/app\u dev.php

似乎没有环境参数,因此您可以在开发环境中生成有效的URL。我只是不想一直用str_替换之类的东西

这太好了:

$this->generateUrl($route, $params, 'prod');
为了您的理解,我正在进行一个cms项目,在这个项目中,我必须将URI与存储在没有app_dev.php的数据库进行匹配


有什么想法吗?

路由器组件工作流不包括任何app.phpapp\u dev.php文件。它只适用于查询字符串中php文件后面的模式,不管该文件是什么


所以你不能这么做。您只能使用.htaccess文件配置来管理将用作默认文件的文件。

您可以在调用generateUrl之前将上下文的$baseUrl设置为“”(在生产环境中也是如此),然后在调用generateUrl后将其重置。每次构建完整的Url时,都会参考RequestContext->getBaseUrl

在我们的例子中,我们必须在没有app_dev或app.php的情况下构建URL,因为我们的前端是一个基于AngularJS的应用程序,与URL匹配。在本例中,由于我们根本不需要app_dev或app.php,因此我们创建了一个执行

$this->router->getContext()->setBaseUrl('');

我相信您可以自己覆盖
路由器
,但我不认为有本机功能可以实现您的目标。