2016-08-27 8 views
0

今日私は私のCakePHP 3アプリの変な動作に直面しました。ログインしていないユーザ(AuthControllerで検出されたユーザ)は、ログインページにリダイレクトしてメッセージを表示する必要があります。代わりに、XYControllerから例外がスローされ、資格情報が失われます。コメント付きのコントローラ構造、分解および簡素化:私は完全に雲からの例外が表示される理由を、理解していない何コントローラーの不思議な継承

class AuthController extends AppController 
{ 

    public function initialize() 
    { 
     parent::initialize(); 

     $this->loadComponent('Auth'); 

     if (empty($this->Auth->getCredentials())) { 
      $this->Flash->error(__('You have to sign in to access the user area.')); 
      //THIS CODE IS REACHED! I'VE CHECKED 

      return $this->redirect(['language' => $this->language, 'controller' => 'Pages', 'action' => 'display', 'login'], 200, true); 
     } 
} 



class XYController extends AuthController 
{ 

    public function index() { 
     //THE CLOUD THROWS "AccessDeniedAcception" (as excepted) 
     //THE ERROR IS SHOWN IN THE BROWSER ON AN ERROR PAGE - WHY ?!?! 
     $data = getSomeDataFromCloud(); 
     ... 
    } 
} 

。私は、親コントローラのinitialize()メソッドが最初に実行され、子コントローラからindex()に到達する前にリダイレクトを実行すると考えました。私は何が欠けていますか?

答えて

0

私は自分でそれを理解しました。

initialize()startupProcess()と置き換える必要があります。 Reference