【发布时间】:2025-12-26 05:25:08
【问题描述】:
我有一个模型扩展了具有特定规则的 AR 类。但现在我需要在这个表中插入行,但是有其他规则。我需要用新规则创建其他模型,还是可以定义其他规则?
【问题讨论】:
标签: php mongodb activerecord yii yii-validation
我有一个模型扩展了具有特定规则的 AR 类。但现在我需要在这个表中插入行,但是有其他规则。我需要用新规则创建其他模型,还是可以定义其他规则?
【问题讨论】:
标签: php mongodb activerecord yii yii-validation
您可以设置验证方案。例如:
$model = new Post();
$model->scenario = 'new_line';
$model->attributes = $_GET['data'];
if ($model->validate()){
$model->save(false);
}
在您的模型中:
public function rules()
{
return array(
array('username, text', 'required','on' => 'new_line')
);
}
在模型规则中,所有数组行都必须有键“on”,否则此规则将不适用。
阅读更多here。
【讨论】:
如果您正在扩展您的课程(活动记录),那么您实际上可以覆盖您的 rules() 函数,即:
class User extends ActiveRecord(){
function rules(){
return array(array(
// Nomrally a rule
))
}
}
然后让你的下一堂课:
class User_extended extends ActiveRecord(){
function rules(){
return array(array(
// Nomrally a rule
))
}
}
应该就是这样。然后你可以调用User_extended 类,你的规则将应用于父类User,因为Yii 在$this 上下文中获取规则,$this 将是你的子类。
但你也可以在这里使用场景,但它可能会变得很脏,尤其是当你需要覆盖其他方法时。
【讨论】:
谢谢。现在我正在尝试使用这个
/**
* @param string $attribute fields names wich should be validated
* @param array $params additional params for validation
*/
public function ValidatorName($attribute,$params) { … }
【讨论】:
beforeValidate你绑定它应该没问题。