我正在使用两个字段"old_password"和"new_password"。如果两个字段中的值相同,我想要错误消息。我没有使用活动记录。我在模型中尝试过:
['a1', 'unique', 'targetAttribute' => 'a2']
但上面的代码仅适用于活动记录。如何在不使用活动记录的情况下收到错误消息?
您需要使用比较验证器而不是唯一。
['new_password', 'compare', 'compareAttribute' => 'old_password', 'operator' => '!='],
因为唯一验证程序验证属性值在整个表中是否唯一
如果你的模型扩展了 yii\base\Model,activeRecerd 不是必需的,你可以使用 rules 函数
public function rules()
{
return [
['a1', 'unique', 'targetAttribute' => 'a2'],
];
}
用于分配验证规则
在控制器中,您可以调用$model验证执行验证>验证
$model = new appmodelsYourForm();
就像 Yii2 指南中建议的用于验证输入一样
// populate model attributes with user inputs $model->load(Yii::$app->request->post()); // which is equivalent to the following: // $model->attributes = Yii::$app->request->post('ContactForm'); if ($model->validate()) { // all inputs are valid } else { // validation failed: $errors is an array containing error messages $errors = $model->errors; }