ユーザメニューポートレットの作成 ========================== 要求分析に基けば、3種のポートレットが必要だと判明しました。 それらは「ユーザメニュー」ポートレット、「タグクラウド」ポートレット、「最近のコメント」ポートレットです。 これらのポートレットを、Yii が提供する [CPortlet] ウイジェットを拡張して開発します。 このセクションでは、最初の具体的なポートレットを開発します。 それはユーザメニューポートレットで、認証されたユーザにのみ提供されるメニュー項目のリストを表示するものです。 メニューは以下の4項目です。 * コメントを承認: 承認待ちとなっているコメントの一覧へのハイパーリンク * 新しい記事を作成: 記事作成ページへのハイパーリンク * 記事を管理: 記事管理ページへのハイパーリンク * ログアウト: 現在のユーザをログアウトさせるリンクボタン `UserMenu` クラスの作成 ------------------------- ユーザメニューポートレットの論理部分を表現する `UserMenu` クラスを作成します。 このクラスはファイル `/wwwroot/blog/protected/components/UserMenu.php` に格納され、 以下のような内容を持ちます。 ~~~ [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` クラスを拡張します。 `CPortlet` の `init()` メソッドと `renderContent()` メソッドをオーバライドします。 前者はポートレットのタイトルを現在のユーザ名に設定します。 後者は `userMenu` というビューを描画することによりポートレットのボディ内容を生成します。 > Tip|情報: 最初に `CPortlet` クラスにアクセスする前に `Yii::import()` を呼んで、明示的に `CPortlet` クラスを含めなければならないことに注意してください。 これは `CPortlet` が `zii` プロジェクトの一部であるためです (`zii` は Yii の公式な拡張ライブラリです)。 パフォーマンス上の考慮から、このプロジェクトに属するクラスはコアクラスとしてリストされていません。そのため、最初に使う前にはインポートする必要があります。 `userMenu` ビューの作成 ------------------------ 次に、`/wwwroot/blog/protected/components/views/userMenu.php` として格納される `userMenu` ビューを作成します。 ~~~ [php]