2.開発の実際
2-2.画面の遷移
2.開発の実際
2-2.画面の遷移
2-2-1.画面の遷移
認証でエラーが発生すればもとのログイン画面に戻るわけですが、認証が成功すると、この作例では、管理トップのメニュー画面に遷移しなければなりません。
認証が終わると、処理は、始まりのSiteControllerクラスのactionIndexメソッドに戻ってきます。
そこの、$this->redirect(Yii::app()->user->returnUrl);は、manager/indexに設定されています。なので、これを、たとえば、さらに別のコントローラは以下のindexにします。ここでは、別にmanageという管理コントローラを新たに作成しましょう。
ちょっとややこしいですが、ログインをindexにしたため、ですね。ですから、管理画面のためのログインはindexではなく、loginとしておいてもいいわけです。この作例では、管理者もindex、つまり、http://ドメイン/manager/login.phpまで入力しなくてもいいように、ちょっとした親心を出しています。開発の練習でもありますから、多少ややこしくしている面もあります。
コントローラーが新しく作られる場合は、views配下にもそれに呼応したディレクトリが作られねばなりません。この例では、manageController.phpをcontrollersの下に、viewsの下にmanageディレクトリを作り、内容は、siteと同じく、error.phpとindex.phpを用意します。
話をもどして、$this->redirect(Yii::app()->user->returnUrl);ですが、コントローラーが決まったところで、リダイレクト先を変え、このようになります。
$this->redirect('index.php?r=manage/index');
Yiiのリンクの構造が知れると思います。index.phpは、大元のmanager直下のindex.phpです。rがリダイレクト先を示す変数で、以下、コントローラー/コントローラー配下のファイル、ということです。
新しく作るコントローラーの中身、言うなればコントローラーのテンプレートは、以下のようになります。
<?php
class ManageController extends Controller
{
/**
* This is the action to handle external exceptions.
*/
public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo $error['message'];
else
$this->render('error', $error);
}
}
/**
* Displays the index page
*/
public function actionIndex()
{
// display the index form
$this->render('index',array('model'=>$model));
}
/**
* Logs out the current user and redirect to homepage.
*/
public function actionLogout()
{
Yii::app()->user->logout();
$this->redirect(Yii::app()->homeUrl);
}
}
ログイン画面で、IDにdemo、パスワードにdemoと入力してください。ちゃんとできていれば、以下のような画面に遷移するはずです。

中身がないので、こうなるのですが、2-1-1.ログイン画面を作るでゲストの場合にコメントされていた部分であるタイトル、メニュー・タブが表示されるようになりました。
タイトルですが、この設定をしているところが、config/main.phpの冒頭にあるname変数です。これを、たとえばopenProjectというように変えます。
ここで、この画面がトップ画面であることから、メニュー・タブのHomeが反転していて欲しいところです。
この判定をしているところが、yii/framework/zii/widgets/CMenu.phpですが、実は、widgetsの中身は、メニュー・タブを出力するviews/layouts/main.phpのところで設定されていることがわかります。
したがって、たとえばHomeのタブの指定が、今はデフォルトの/site/indexになっていますが、この作例では/manage/indexなので、それに変更し、Homeも日本語「管理画面トップ」と変え、再読み込みを行ってください。管理画面トップが反転していると思います。他のメニュー・タブの名称とurl先も適宜直してください。
|