Symfony: 在开发环境中生成生产环境的URL

4
我想知道在使用Symfony路由组件生成URL时是否可以选择环境。
在控制器中:
$this->generateUrl($route, $params);

在生产环境中生成/,在开发环境中生成/app_dev.php

似乎没有一个参数可以让你在开发环境中生成生产环境的URL。我不想一直使用类似于str_replace这样的东西。

这将是很棒的:

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

为了让您理解,我正在进行一个CMS项目,需要在没有app_dev.php的情况下将URI与存储它们的数据库进行匹配。 有什么想法吗?

我相信你可以自己覆盖Router,但我不认为有本地函数可以实现你的目标。 - NHG
2个回答

2

这只是一种不太正规的解决方案,您可以在调用generateUrl之前将上下文的$baseUrl设置为''(就像在生产环境中一样),然后在调用之后将其重置回来。每次构建完整的URL时,都会查看RequestContext->getBaseUrl。

在我们的情况下,我们需要构建没有app_dev或app.php的URL,因为我们的前端是基于AngularJS的应用程序,与URL匹配。在这种情况下,由于我们根本不想要app_dev或app.php,因此我们创建了一个EventListener,执行以下操作:

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

0

路由器组件工作流程不包括任何app.phpapp_dev.php文件。它只能使用查询字符串中php文件后面的模式,无论该文件是什么。

所以你不能这样做。你只能使用.htaccess文件配置来管理将使用哪个文件作为默认文件,没有更多的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接