私はページモデルを持っています。ページはネストされています - 各ページは別のページに属することができます。スペースの制限のため、「メインページ」(親ページのないページ) の最大数を強制する必要があります。問題は、その制限を確認するのに最適な場所はどこかということです。でbeforeSave
?またはカスタム検証ルールで?または他の場所?
質問する
184 次
1 に答える
0
クラス Page のカスタム ルールの例を次に示します。ただし、parentId
属性が親ページへの null 許容外部キーでありnull
、Page に親がない場合、つまりMain Pageの場合に設定されます。
class Page extends CActiveRecord
{
const MAINPAGES_LIMIT = 10;
public function rules()
{
return array(
...
array('parentId', 'mayNewMainPageBeCreated', 'on'=>'insert'),
...
);
}
// custom rule validator
public function mayNewMainPageBeCreated($attribute, $params)
{
$count = Page::model()->count("parentId IS NULL");
if ($count >= self::MAINPAGES_LIMIT) {
$this->addError($attribute, "Can't create more Main Pages");
}
}
}
于 2013-08-26T12:38:57.583 に答える