私はYii 2で新しく、問題はモジュール内のルーティングです。 私のアプリには、ユーザーと管理者の両方のプロファイルキャビネットであるモジュールがあります。 DefaultControllerの代わりにCabinetControllerを作成し、AdminControllerとUserControllerも作成しました。モジュール内のルーティングが機能しないYii 2
私は何をしたいですか?私はこのCabinetControllerがリクエストを受け取り、ユーザーがadminかどうかを確認した後、AdminControllerまたはUserControllerに転送します。
configファイルでは、モジュールのデフォルトルートを「キャビネット」として設定します(これはデフォルトコントローラーの名前です)。そしてUrlManagerの「ルール」の部分で、私は次のように書いた:
'modules' => [
'cabinet' => [
'class' => 'app\modules\cabinet\Module',
'defaultRoute' => 'cabinet'
],
'utility' => [
'class' => 'c006\utility\migration\Module',
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<_c:\w+>/' => '<_c>/',
'<_c:[\w\-]+>/<_a:\w+>' => '<_c>/<_a>',
'<_m:cabinet>/<_a:\w+>' => '<_a>',
],
],
私は「my-site.com/cabinet」それは罰金と開い作品「管理者/インデックス」に行けば、私はそれがこの要求をredirestしたためAdminController/actionIndexに移動しますが、 "my-site.com/cabinet/users"のような場所に行くと404 NotFoundで応答します。私はlogerを開いて参照してください。メッセージと例外「のYii \ベースの\ InvalidRouteException」「リクエスト 『キャビネット/デスクトップ』を解決できません
これは私のCabinetControllerと私は管理者/ UserControllerでの要求を転送する方法です。
public function init()
{
parent::init();
$this->user = $this->findModel();
$this->controllerToUse = $this->user->isAdmin() ? 'admin' : 'user';
}
public function actionIndex()
{
return $this->module->runAction($this->controllerToUse . '/' . $this->action->id);
}
CabinetControllerでdefaultActionを変更した場合、このアクションは正常に正常に実行されます。または、私が "my-site.com/cabinet/admin/users"に行った場合、URLにコントローラーが見つかりました(私が思う)。ルーティングYii2に少しトリッキーなことができ