私は、メインコントローラから「フォワード」メソッドを使用しようとしています。最初に、最初のコントローラから「転送されたコントローラ」に元の「要求」が送信されることを保証しています(両方のコントローラでvar_dumpを実行すると、同じ要求オブジェクトが取得されます)。しかし、転送されたコントローラからレンダリングされた小枝から「リクエストオブジェクト」へのアクセスを試みると、app.request.get(_route)、app.request.get(_route_params)などが異なります。これは、元の要求が小枝のグローバルからのみ失われているかのようです。転送されたコントローラ用にレンダリングされた小枝で、小枝app.request.get( '_ route_params')にアクセスするにはどうすればよいですか?
namespace MyBundle\Controller;
//...
class BookingController extends Controller {
/**
* @Route("/book/hotel/{slug}", name="booking_hotel")
*/
public function establishmentAction(Request $request, $slug = null) {
\dump($request); // dumper 1
return $this->forward('ExpediaBundle:Booking:index', array('request' => $request);
}
}
namespace ExpediaBundle\Controller;
//...
class BookingController extends Controller {
/**
* @Route("/expedia/booking", name="expedia_booking")
* @Template()
*/
public function indexAction(Request $request)
{
\dump($request); // dumper 2
// The dumper 1 === dumper 2
return array();
}
}
{# file: ExpediaBundle:Booking:index.html.twig #}
{{ dump(app.request.attributes.get('_route_params')) }} -> works fine
{{ dump(app.request.get('_route_params')) }} -> works fine
私は_route_paramsが正しくダンプ見ることができます(前方なし)ルートhttp://localhost/expedia/bookingに入力します。しかし、フォワードコントローラを使用すると、varDumperは両方のケースでnullを返します。
http://localhost/book/hotel/hotelname:
{{ dump(app.request.attributes.get('_route_params')) }} -> null
{{ dump(app.request.get('_route_params')) }} -> null
私が間違って何をしているのですか?
ありがとうございます。