Comment
モデルでは、主に rules()
メソッドと attributeLabels()
メソッドをカスタマイズします。attributeLabels()
メソッドは属性の名前と属性のラベルの対応表を返します。relations()
は Gii
ツールで生成したコードで十分なので手を入れる必要はありません。
rules()
メソッドのカスタマイズ ¶最初に、Gii
ツールで生成した検証ルールをカスタマイズします。コメント用のルールは以下の通りです。
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() を呼ぶと属性のラベルを表示できます。
public function attributeLabels()
{
return array(
'id' => 'ID',
'content' => 'コメント',
'status' => '状態',
'create_time' => '作成日時',
'author' => '名前',
'email' => 'メール',
'url' => 'ウェブサイト',
'post_id' => '記事',
);
}
ヒント:
attributeLabels()
で属性のラベルを宣言していない場合、アルゴリズムに従って適切なラベルが生成されます。例えば、create_time
やcreateTime
という属性には、Create Time
というラベルが生成されます。
コメントの作成時刻を記録したいので、Post
モデルと同様に、Comment
の beforeSave()
メソッドをオーバーライドします。
protected function beforeSave()
{
if(parent::beforeSave())
{
if($this->isNewRecord)
$this->create_time=time();
return true;
}
else
return false;
}
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.