从symfony请求获取prod URI的最佳方式 - 在开发环境中

时间:2016-09-11 11:05:53

标签: symfony request uri

我将url slugs存储在我的数据库中,如下所示: / blog / important-article 。然后,我的BlogController将对 / blog 下面的资源的任何请求解析为相应的数据库条目。

这很好用,但在开发环境中,我仍然需要使用解决方法,因为dev路径是 /app_dev.php / blog / important-article - 数据库中不存在:

public function blogAction(Request $request)
{
    $slug = $request->getRequestUri(); // matches to regex \/(app_dev.php\/)?blog\/.+
    //...
}

我尝试了两种可行的解决方法,但我不认为它们是可行的方法:

  1. 在控制器中使用$slug = str_replace ('app_dev.php/', '', $slug);
  2. 在路由配置中捕获实际的slug(/ blog / important-article ),并将其作为参数交给控制器。然后做$slug = '/blog/'.$slugPart;
  3. 是否有一种symfony方式来获取产品Uri(即使在开发环境中)?

    [编辑:] @gp_sflover建议的"possible"副本具有完全不同的焦点。它更多地是关于getPathInfo()的文档/用法,而不是关于使用它的原因和时间。另一方面,我的问题是关于一个特定的用例 - getPathInfo()是你可能正在寻找的实际解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用pathInfo()方法:

  

在您的应用程序中,您需要一种识别请求的方法;大部分的   时间,这是通过"路径信息"请求,可以   通过getPathInfo()方法访问:

// for a request to http://example.com/blog/index.php/post/hello-world
// the path info is "/post/hello-world"
$request->getPathInfo();

希望这个帮助