0

我有页面模型。页面是嵌套的——每个页面都可以属于另一个页面。由于空间限制,我需要强制最大数量的“主页”(没有父页面的页面)。问题是检查该限制的最佳位置在哪里?在beforeSave? 还是在自定义验证规则中?或其他地方?

4

1 回答 1

0

这是 Page 类的自定义规则示例,前提是该parentId属性是父页面的可为空的外键,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 回答