###前提・実現したいこと
CakePHP3で簡単な会員制システムを作っています。
Controllerが増えて来たため、表題の通り、Controllerをフォルダ分けして、ルーティングを変更しました。
その際、階層に分けたルーティングは正常に動いているようでしたが、AppControllerに書いたログイン認証が動かなくなりました。
###現状の整理
以下のことを行いました。
Controller/ ├ DevicesController ├ WalletsController ├ UsersController └ AppController ※拡張子は省略しております。
の状態のものを
Controller/ ├ Accounts/ ├ ├ DeviceController ├ └ WalletsController ├ UsersController └ AppController
に変更し、
routes.phpに以下を記述しています。
$routes->connect('/accounts/devices/',['controller' => 'devices','action'=>'index', 'prefix' => 'accounts']);
DevicesController.phpには、
以下のコードを追記しています。
namespace App\Controller\Accounts; use App\Controller\AppController; class DevicesController extends AppController{ public function index(){ } }
Templateは用意済みで、省略いたします。
###問題とエラー
これまでの状態で、
http://cake_root_url/accounts/device/
にアクセスをすると、以下のようなエラーが発生します。
Error: A route matching "array('controller' => 'Users', 'action' => 'login', 'prefix' => 'accounts' ...)" could not be found
まだ明確に書いていませんでしたが、
システムが会員制であるためDevicesControllerが継承している
AppControllerに、ログイン認証の記述を書いています。
ログイン認証は Usersコントローラのloginメソッドで行っております。
route.phpには、以下の形で'home'に設定しています。
$routes->connect('/',['controller' => 'Users', 'action' => 'login','home']);
/Controller/accounts/devicesControllerにアクセスをしたら、
UsersControllerのloginメソッドを探しにいっているようで、not foundになります。
念のため、AppControllerの認証部分を以下に記載しますが、
DeviceControllerのnamespaceが 「App\Controller\Accounts」であるのに対して、
AppControllerのnamespaceが「App\Controller」でずれていることが原因かと考えています。
namespace App\Controller; use Cake\Controller\Controller; class AppController extends Controller{ public function initialize(){ parent::initialize(); $this->loadComponent('Auth',[ 'athorize' => ['Controller'], 'authenticate' => [ /* ログイン入力項目に関する処理 */ ], 'loginRedirect' => [ 'controller' => 'Users', 'action' => 'mypage' ], 'logoutRedirect' => [ 'controller' => 'Users', 'action' => 'logout' ], ] } }
Controllers/の中に階層を作った状態で、
AppControllerのログイン認証を正常に動かすには、
どのように修正すればよろしいでしょうか?
大変恐縮ですが、分かる方どなたか
アドバイスのほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/28 23:19 編集