Files
yii/docs/blog/ja/comment.model.txt
2012-08-23 19:50:40 +09:00

71 lines
2.5 KiB
Plaintext

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;
}
~~~
<div class="revision">$Id$</div>