我想知道使用 symfony 路由组件生成 url 时是否可以选择环境。
在控制器中
$this->generateUrl($route, $params);
在 prod 环境中生成
/
,在 dev 环境中生成 /app_dev.php
。
环境似乎没有参数,因此您可以在开发环境中生成有效的网址。我只是不想一直使用像 str_replace 这样的东西。
这太好了:
$this->generateUrl($route, $params, 'prod');
为了您的理解,我正在开发一个 cms 项目,在该项目中,我必须将 uri 与存储它们的数据库进行匹配,而无需 app_dev.php。
有什么想法吗?
更多的是一种黑客而不是正确的解决方案,您可以在调用generateUrl之前将Context的$baseUrl设置为''(就像在生产环境中一样)并在调用后将其重置回来。每次构建完整的 Url 时都会查阅 RequestContext->getBaseUrl。
在我们的例子中,我们必须构建没有 app_dev 或 app.php 的 URL,因为我们的前端是一个与 URL 匹配的基于 AngularJS 的应用程序。在本例中,由于我们根本不需要 app_dev 或 app.php,因此我们创建了一个 EventListener 来执行以下操作:
$this->router->getContext()->setBaseUrl('');
app.php 或 app_dev.php 文件。它仅适用于查询字符串中 php 文件后面的模式,无论该文件是什么。
所以你无法做到这一点。您只能使用.htaccess 文件配置来管理将使用哪些文件作为默认文件,仅此而已。