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