我有一个使用CActiveRecord表示键值设置的模型。
数据库表具有以下结构:
| Field | Type |
| key | varchar(255) |
| category | varchar(255) |
| default | varchar(255) |
| is_editable | tinyint(1) |
| is_required | tinyint(1) |
| name | varchar(255) |
| description | text |
| value | varchar(255) |
| create_at | datetime |
| update_at | datetime |
需要做的是仅在value
属性为is_required
时才需要true
参数。
当方案为is_required
时,首次添加create
属性。
我猜这个过程应该继续使用自定义验证方法。
答案 0 :(得分:0)
以下是问题的解决方案:
rules()
方法应该类似于:
public function rules()
{
return array(
array('key', 'required'),
array('name, is_required, default', 'required', 'on'=>'create'),
array('key, category, default, type, name, value', 'length', 'max'=>255),
array('category, value, name, is_required', 'safe'),
);
}
我们可以覆盖isAttributeRequired
函数,因此需要额外检查。
public function isAttributeRequired($attribute)
{
if($attribute == 'value' && $this->is_required)
return true;
return parent::isAttributeRequired($attribute);
}