【发布时间】:2016-11-07 16:49:41
【问题描述】:
我正在尝试使用主控制器中的“转发”方法。首先,我向我保证原始的“请求”是从第一个控制器发送到“转发的控制器”(如果我在两个控制器中执行 var_dump,我会得到相同的请求对象。)。但是,当我尝试从转发控制器呈现的树枝访问“请求对象”时,app.request.get(_route)、app.request.get(_route_params) 和其他是不同的。就好像原始请求仅从 twig 全局变量中丢失。
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
当我进入路由 http://localhost/expedia/booking(没有转发)时,我可以正确看到 _route_params 转储。但是如果我使用前向控制器,varDumper 在这两种情况下都会返回 null。
http://localhost/book/hotel/hotelname:
{{ dump(app.request.attributes.get('_route_params')) }} -> null
{{ dump(app.request.get('_route_params')) }} -> null
我做错了什么?
先谢谢你了。
【问题讨论】: