更新日: 2017-09-01 (金) 20:19:57 (77d)

: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']);
	}

   

選択肢 投票
役に立った 11  
役に立たなかった 0  
どちらでもない 0  
このページが参照された数
Total: 4210, 今日: 7, 昨日: 0

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2017-09-01 (金) 20:19:57 (77d)