2

たとえば、私は URL を持っています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

また

http://server/mysite/web/app_dev.php/another_resource/1エンドポイント URLを/another_resource/1Symfony2に変換する最も安全な方法を誰でも提案できますか?

なぜこれが必要なのか知りたい場合

コントローラー アクションは、リクエスト コンテンツでいくつかの URL を受信して​​います。アクションは、これらの URL を解析して、対応するリソースを認識する必要があります。$router->matchURLからパラメータを取得する機能を利用しようとしています。一致関数は/another_resource/1部分のみを想定しています。

4

1 に答える 1

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();
于 2015-09-29T19:00:38.393 に答える