Comment モデルのカスタマイズ =========================== `Comment` モデルでは、主に `rules()` メソッドと `attributeLabels()` メソッドをカスタマイズします。`attributeLabels()` メソッドは属性の名前と属性のラベルの対応表を返します。`relations()` は `Gii` ツールで生成したコードで十分なので手を入れる必要はありません。 `rules()` メソッドのカスタマイズ ------------------------------- 最初に、`Gii` ツールで生成した検証ルールをカスタマイズします。コメント用のルールは以下の通りです。 ~~~ [php] public function rules() { return array( array('content, author, email', 'required'), array('author, email, url', 'length', 'max'=>128), array('email','email'), array('url','url'), ); } ~~~ 上記の指定内容は次のような意味です。`author`, `email`, `content` 属性は必須、`author`, `email`, `url` は最大128字、`email` 属性は有効なメールアドレスであること、`url` 属性は有効な URL であること。 `attributeLabels()` メソッドのカスタマイズ ----------------------------------------- 次に `attributeLabels()` メソッドをカスタマイズして、モデルの各属性を表示する際のラベルを宣言します。このメソッドは、名前-ラベルの組で構成される配列を返します。[CHtml::activeLabel()] を呼ぶと属性のラベルを表示できます。 ~~~ [php] public function attributeLabels() { return array( 'id' => 'ID', 'content' => 'コメント', 'status' => '状態', 'create_time' => '作成日時', 'author' => '名前', 'email' => 'メール', 'url' => 'ウェブサイト', 'post_id' => '記事', ); } ~~~ > Tip|ヒント: `attributeLabels()` で属性のラベルを宣言していない場合、アルゴリズムに従って適切なラベルが生成されます。例えば、`create_time` や `createTime` という属性には、`Create Time` というラベルが生成されます。 保存プロセスのカスタマイズ -------------------------- コメントの作成時刻を記録したいので、`Post` モデルと同様に、`Comment` の `beforeSave()` メソッドをオーバーライドします。 ~~~ [php] protected function beforeSave() { if(parent::beforeSave()) { if($this->isNewRecord) $this->create_time=time(); return true; } else return false; } ~~~
$Id$