Comment
モデルでは、主にrules()
メソッドとattributeLabels()
メソッドをカスタマイズする必要があります。 attributeLabels()
メソッドは、属性名と属性ラベルのマッピングを返します。 Gii
ツールによって生成されたコードで十分なので、relations()
に触れる必要はありません。
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' => 'Comment',
'status' => 'Status',
'create_time' => 'Create Time',
'author' => 'Name',
'email' => 'Email',
'url' => 'Website',
'post_id' => 'Post',
);
}
ヒント: 属性のラベルが
attributeLabels()
で宣言されていない場合、適切なラベルを生成するためのアルゴリズムが使用されます。たとえば、属性create_time
またはcreateTime
には、ラベル作成時間
が生成されます。
コメントの作成時間を記録するため、Post
モデルと同様に、Comment
の`beforeSave()```メソッドをオーバーライドします
protected function beforeSave()
{
if(parent::beforeSave())
{
if($this->isNewRecord)
$this->create_time=time();
return true;
}
else
return false;
}
タイプミスを見つけた場合、またはこのページの改善が必要と思われる場合は、
githubで編集してください !
beforeSaveではなくbeforeValidateでMarkdownが生成される
投稿コンテンツがbeforeSave()ではなくbeforeValidate()でCMardownParserによって解析される理由は、投稿作成ページの「プレビュー」ボタンを使用するとコンテンツが解析されるためです(ご想像のとおり)。
コメントするには、サインアップまたはログインしてください。