0

私はページモデルを持っています。ページはネストされています - 各ページは別のページに属することができます。スペースの制限のため、「メインページ」(親ページのないページ) の最大数を強制する必要があります。問題は、その制限を確認するのに最適な場所はどこかということです。でbeforeSave?またはカスタム検証ルールで?または他の場所?

4

1 に答える 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 に答える