Cakephp 3在父类的beforeFilter中重定向

时间:2015-08-24 07:53:40

标签: php cakephp redirect url-redirection cakephp-3.0

在我们的CakePHP 3应用程序中,我们发现了不同的行为。我们确信它在CakePHP 2中运行良好,所以我想在新版本中有所改变。

当用户访问此网址:/b2controller/myMethod时,这些方法会运行:

AppController::beforeFilter()  
BController::beforeFilter()  
B2Controller::beforeFilter()  
B2Controller::myMethod()  
B2Controller::myMethod2()    

然后用户被重定向到此网址/ccontroller/myMethod10/

但我们需要这个:

用户访问时 /b2controller/myMethod$isOk条件为true,然后将用户重定向到/ccontroller/myMethod10/,而不会运行BController::beforeFilter()B2Controller::beforeFilter()B2Controller::myMethod()和{ {1}}。

我们的最小代码是这样的:

BController::MyMethod2()

如何让用户从主类的beforeFilter重定向到另一个控制器操作?请注意,重定向发生。但是在调用class AppController { function beforeFilter(Event $event) { // set $isOk variable if ($isOk == TRUE) { return $this->redirect('/ccontroller/myMethod10/'); } $aa=1; $ab=2; } } class BController extends AppController { function beforeFilter(Event $event) { parent::beforeFilter($event); $a=1; $b=2; } function myOtherMethod() { myOtherMethod2(); } function myOtherMethod2() { ... ... } } class B2Controller extends BController { function beforeFilter(Event $event) { parent::beforeFilter($event); $m1=1; $m2=2; } function myMethod() { myMethod2(); } function myMethod2() { ... ... } } class CController extends AppController { function beforeFilter(Event $event) { parent::beforeFilter($event); } function myMethod10() { ... ... ... } } myMethod()后,用户会被重定向。

另请注意,还有其他控制器,如myMethod2(),它们使用beforeFilter重定向行为。

0 个答案:

没有答案