是否可以转发请求,传递所有GET / POST参数?
我想如果我只是做
- $this->forward('dest')
没有任何GET / POST参数,我将去dest?
UPDATE
我的目标其实就是要有一个控制器动作,比如addSomething,它会检查用户是否有足够的“项目”添加东西.然后将请求转发给审批控制器,继续添加{Type} Something
或者在所有控制器中得到一个“检查”服务,检查更合适?无论如何,我认为它的信息知道如何转发控制器行动与所有参数
我没有看到任何理由通过内核转发请求.您可以按照建议的方式将验证服务中封装此逻辑的路由,或者您可以创建一个在路由器侦听器之后运行的kernel.request侦听器,并且仅在满足条件的情况下才应用_controller属性.
例如,这个routing.yml:
- some_route:
- pattern: /xyz
- defaults: { _controller_candidate: "FooBundle:Bar:baz" }
而这个听众:
- class MyListener
- {
- public function onKernelRequest($event)
- {
- $request = $event->getRequest();
- if (!$controller = $request->attributes->get('_controller_candidiate')) {
- return;
- }
- if (/* your logic... */) {
- $request->attributes->set('_controller',$controller');
- }
- }
- }
配置运行后核心路由器侦听器:
- services:
- my_listener:
- class: MyListener
- tags:
- -
- name: kernel.event_listener
- event: kernel.request
- priority: -10
Symfony 2.0中的核心路由器侦听器的优先级为0,Symfony 2.1中的优先级为32.在这两种情况下,-10的优先级都应该起作用.
我很好奇,看看这是否有效?