Symfony:在开发环境中生成prod url

时间:2014-02-13 15:31:57

标签: symfony routing

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

在控制器中

$this->generateUrl($route, $params);

在prod envrionment中生成/,在dev中生成/app_dev.php

似乎没有环境参数,因此您可以在开发环境中生成生产URL。我只是不想一直使用像str_replace这样的东西。

这很棒:

$this->generateUrl($route, $params, 'prod');

为了您的理解,我正在开发一个cms项目,我必须在没有app_dev.php的情况下将uris与存储它们的数据库进行匹配。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

更多的是黑客而不是正确的解决方案,您可以在调用generateUrl之前将Context的$ baseUrl设置为''(就像在生产环境中一样)并在调用之后重置它。每次构建完整的Url时,都会查询RequestContext-> getBaseUrl。

在我们的例子中,我们必须在没有app_dev或app.php的情况下构建Urls,因为我们的前端是一个基于AngularJS的应用程序,匹配URL。在这种情况下,由于我们完全想要app_dev或app.php,我们创建了一个执行

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

答案 1 :(得分:0)

路由器组件工作流程不包含任何 app.php app_dev.php 文件。它只适用于查询字符串中的php文件之后的模式,无论该文件是什么。

所以你无法做到这一点。您只能使用 .htaccess 文件配置来管理将使用哪个文件作为默认文件,不再需要。