ユーザーメニューポートレットの作成
ユーザーポートレットメニューで下記のリンクリストを作成する
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
