Yii ブログシステム作成(13)

ユーザーメニューポートレットの作成

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

yii050

※URLの書き換えについては次章で解説する

参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/portlet.menu

Comments are closed.