说,我有一个网址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
部分。
答案 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();