CakePHP3 beforeFilter(Event $event)のエラー

PHP
CakePHP3

コントローラーごとに、認証なしにアクセスできるメソッドを、許可しておくのに下記のようにやると思いますが、

 //AppController内
         $this->loadComponent('Auth', [
            'loginRedirect' => [
                'controller' => 'Offers',
                'action' => 'index'
            ],
            'logoutRedirect' => [
                'controller' => 'Users',
                'action' => 'add',
                'home'
            ]
        ]);
 //個別のController内
 public function beforeFilter(Event $event)
 	{
 		parent::beforeFilter($event);
 		$this->Auth->allow(['cancelFromSp']);
 	}

次のようなエラーが出ちゃうことがあります。

Strict (2048): Declaration of App\Controller\MoresController::beforeFilter() should be compatible with App\Controller\AppController::beforeFilter(Cake\Event\Event $event) [APP/Controller\MoresController.php, line 12]

Warning (4096): Argument 1 passed to App\Controller\MoresController::beforeFilter() must be an instance of App\Controller\Event, instance of Cake\Event\Event given, called in C:\xampp2\htdocs\cake\vendor\cakephp\cakephp\src\Event\EventManager.php on line 386 and defined [APP/Controller\MoresController.php, line 30]

あれれれー、なんか変数の設定の仕方がおかしかったかな??
とか思っちゃいますが、原因は簡単なことで、

 use Cake\Event\Event;

が抜けてるとこうなっちゃうんですねー。

コントローラーの最初に、上記のEventをuseするように追加します。

 <?php
 namespace App\Controller;
 
 use App\Controller\AppController;
 use Cake\Event\Event;
 
 class MoresController extends AppController
 {
 
    
    public function beforeFilter(Event $event)
 	{
 		parent::beforeFilter($event);
 		$this->Auth->allow(['cancelFromSp']);
 	}
 
    
カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です