ユーザーメニューポートレットの作成
ユーザーポートレットメニューで下記のリンクリストを作成する
Yiiが提供する『CPortlet』ウィジェットを拡張して実装する
・コメントを承認・承認待ちとなっているコメントの一覧へのハイパーリンク ・新しい記事を作成:記事作成ページへのハイパーリンク ・記事を管理:記事管理ページへのハイパーリンク ログアウト:現在のユーザーをログアウトさせるリンクボタン
UserMenuクラスの作成
メニューを表示処理するための”UserMenu.php”ファイルを作成する
格納先は【/blog/protected/components/】
<?php Yii::import('zii.widgets.CPortlet'); class UserMenu extends CPortlet { /** * * 初期化処理 * **/ public function init() { $this->title = CHtml::encode(Yii::app()->user->name); parent::init(); } /** * * コンテンツをレンダリング * **/ protected function renderContent() { $this->render('userMenu'); } }
『UserMenu』クラスは、ziiライブラリクラスである『CPortlet』クラスを拡張して inti()とrenderContent()メソッドをオーバーライドする init()はポートレットのタイトルを現在のユーザー名に設定する renderContent()は『UserMenu』というビューを描画することによりポートレットボディの内容を生成する
※Yii::import()を読んて明示的にCPortletを含めるの忘れないようにすること
userMenuビューの作成
メニューを表示するためのビュー”UserMenu.php”ファイルを作成する
格納先は【/blog/protected/components/views/】
<ul> <li><?php echo CHtml::link('記事作成', array('post/create')); ?></li> <li><?php echo CHtml::link('記事管理', array('post/admin')); ?></li> <li><?php echo CHtml::link('承認処理', array('comment/index')) .'('.Comment::model()->pendingCommentCount.')'; ?></li> <li><?php echo CHtml::link('ログアウト', array('site/logout')); ?></li> </ul>
既定として、ウィジェットのビューファイルは、ウィジェットクラスファイルを含むディレクトリの "views"サブディレクトリの下に配置し、ファイル名はビュー名と等しい必要がある
UserMenuポートレットの使用
“colimn2.php”ファイルを修正する
・・・ <div id="sidebar"> <?php // "UserMenu"ポートレットを表示 if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); ?> </div><!-- sidebar --> ・・・
widget()メソッドを読んでUserMenuクラスのインスタンスを生成して実行する このポートレットは認証済みのユーザーにのみ表示されるため、ユーザーの『isGuest』のプロパティが "false"の場合にのみwidget()メソッドをコールする
■実行画面
【http://loaclhost/index.php?r=post/】にアクセス
※URLの書き換えについては次章で解説する
参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/portlet.menu