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