如何限制yii中类别中的最大项目数?

时间:2013-08-26 09:52:24

标签: php validation yii

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

1 个答案:

答案 0 :(得分:0)

以下是类Page的自定义规则的示例,前提是parentId属性是父页面的可空外键,如果页面没有父页面,则设置为null,即它是主页

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");
        }
    }
}