我使用两个字段“old_password”和“new_password”。如果两个字段中的值相同,我想要错误消息。 我没有使用Activerecords。 我试过模特:
['a1', 'unique', 'targetAttribute' => 'a2']
但上面的代码仅适用于活动记录。 如何在不使用活动记录的情况下收到错误消息?
答案 0 :(得分:2)
您需要使用compare验证程序而不是唯一验证程序。
['new_password', 'compare', 'compareAttribute' => 'old_password', 'operator' => '!='],
因为唯一验证器验证属性值在整个表中是唯一的
答案 1 :(得分:0)
如果您的模型扩展为yii \ base \ Model,则不需要activeRecerd,您可以使用规则函数
public function rules()
{
return [
['a1', 'unique', 'targetAttribute' => 'a2'],
];
}
用于分配验证规则
在您的控制器中,您可以执行验证调用$ model-> validation
$model = new \app\models\YourForm();
与建议的in Yii2 guide for validating input
类似// 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; }