【问题标题】:Symfony: generate prod url in dev environmentSymfony:在开发环境中生成产品 url
【发布时间】:2014-02-13 15:31:56
【问题描述】:

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

在控制器中

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

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

似乎没有环境参数,因此您可以在开发环境中生成生产性网址。我只是不想一直使用 str_replace 之类的东西。

这会很棒:

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

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

有什么想法吗?

【问题讨论】:

  • 我确信你可以自己覆盖Router,但我认为没有原生函数可以实现你的目标。

标签: symfony routing


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    所以你不能这样做。您只能使用 .htaccess 文件配置来管理将使用哪个文件作为默认文件,不能再使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2018-06-04
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多