Symfony2明确获取URL的路径信息

时间:2015-09-27 13:19:40

标签: php symfony pathinfo

说,我有一个网址http://server/mysite/web/app_dev.php/resource/1。 我正在执行GET请求,相应的操作是ResourceController::getAction

在此控制器操作中,如果我拨打$request->getPathInfo(),则会向我/resource/1

但是在同一个控制器中,如果我使用另一个资源的url创建一个Request对象并调用getPathInfo(),则返回更长的版本。

$request = Request::create('http://server/mysite/web/app_dev.php/another_resource/1');
echo $request->getPathInfo();

OUTPUT >>
/mysite/web/app_dev.php/another_resource/1

在这种情况下,如何让getPathInfo()仅返回/another_resource/1

或者

任何人都可以建议在Symfony2中将端点网址http://server/mysite/web/app_dev.php/another_resource/1转换为/another_resource/1的最安全方法是什么?

如果您有兴趣知道我为什么需要这个

控制器操作正在接收请求内容中的一些URL。该操作需要解析这些URL以识别相应的资源。我试图利用$router->match函数从URL中检索参数。匹配函数只需要/another_resource/1部分。

1 个答案:

答案 0 :(得分:0)

Request :: create方法创建一个新的请求,不知道有关当前请求的任何信息,它返回完整的uri,因为它不知道当前的脚本文件。 尝试:

$request = Request::create('http://server/mysite/web/app_dev.php/another_resource/1', null, array(), array(), array(), array(
    'SCRIPT_NAME' => $this->get('kernel')->getEnvironment() == 'dev' ? 'app_dev.php' : 'app.php',
    'SCRIPT_FILENAME' => $this->get('kernel')->getEnvironment() == 'dev' ? 'app_dev.php' : 'app.php',
));
echo $request->getPathInfo();