レイアウトに関してはあまり詳しくは述べられていません。だから、私の側から推測していることはほとんどありません。あなたが理解することを願っています。ログイン後ログイン&前のためYii2アプリ-基本的な2種類のレイアウトを持つ
での作業 仮定
ディレクトリ構造
Root-Folder
- assets
-- BeforeLoginAsset.php
-- AfterLoginAsset.php
- commands
- components
- config
-- web.php
- controllers
-- MyController.php
.
.
.
.
BeforeLoginAsset.php & AfterLoginAsset.phpは、アプリケーションの2つのレイアウトです。それぞれログイン後のログイン&の前のもの。(あなたはすでにログインの&メインレイアウトとしてあなたの質問に言及しています)
あなたはこれらのレイアウト構造を知っていると仮定します。 (ない場合は、その後、私は、このセクションに関する詳細でより多くの情報を提供しません。)
のconfig /ここweb.php
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
.
.
'assetManager' => [
'class' => 'yii\web\AssetManager',
],
],
'on beforeRequest' => function ($event) {
Yii::$app->layout = Yii::$app->user->isGuest ? '@app/views/Mylayouts/beforeLogin.php' : '@app/views/Mylayouts/afterlogin.php' ;
},
'timeZone'=>'',
'params' => $myParams,
];
if (YII_ENV_DEV) {
}
return $config;
、'on beforeRequest'
はあなたがそうであるようにレイアウトを決定する重要な役割を果たしますすでにそれをやっている。
MyController.phpが作成されており、アプリケーションで使用されているすべてのコントローラに拡張できます。各このコモンコントローラーを拡張し、すべてのコントローラのために実行されますあなたの共通のコントローラののinit()機能で
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class MyController extends Controller
{
public function init() {
if(!Yii::$app->user->isGuest) {
return $this->redirect(['/dashboard']);
} else {
return $this->redirect(['/login']);
}
}
}
宣言条件。
この場合、ユーザーがログインしていない場合、ログインページの後には移動しません。ログインページの前にスローされます。どのように実装するかはあなた次第です。あなたと共有するのは単なるアイデアです。
希望はあなたを助けます。
ログインレイアウトを定義しましたか? '$ this-> layout =" login ";' – Mohan
はい私は定義しました.. Everythinはうまく動作しますが、手動でアドレスバーにテキストを入力すると、ページがダッシュボードサイトに見つからないようにリダイレクトされます –
デフォルトルートを作成 – Mohan