在 Yii2 中,表单验证是通过模型类来实现的。模型类是表示数据库表的类,它继承自 yii\base\Model 类。可以在模型类中定义需要验证的属性和规则,然后使用 validate() 方法来进行表单验证。
下面是一个简单的例子,演示了如何在模型类中定义需要验证的属性和规则:
use yii\base\Model;
class ContactForm extends Model
{
public $name;
public $email;
public $subject;
public $body;
public function rules()
{
return [
// name, email, subject and body are required
[['name', 'email', 'subject', 'body'], 'required'],
// email has to be a valid email address
['email', 'email'],
];
}
}
在上面的例子中,模型类 ContactForm 定义了需要验证的属性:name、email、subject 和 body,同时定义了验证规则。例如,验证规则 [['name', 'email', 'subject', 'body'], 'required'] 表示这四个属性都是必填的,而 ['email', 'email'] 表示 email 属性必须是一个有效的电子邮件地址。
当用户提交表单数据时,可以通过调用模型类的 load() 方法将表单数据加载到模型类中。然后,通过调用 validate() 方法进行表单验证。如果表单数据通过验证,则可以执行其他操作。如果表单数据未通过验证,则可以获取错误信息并将其显示给用户。
例如,下面是如何在控制器中使用模型类进行表单验证的例子:
public function actionContact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// do something here
return $this->render('contact-success');
} else {
return $this->render('contact', [
'model' => $model,
]);
}
}
在上面的例子中,控制器的 actionContact() 方法创建一个 ContactForm 模型类的实例,并使用 load() 方法将 POST 数据加载到模型中。然后,使用 validate() 方法对表单数据进行验证。如果表单数据通过验证,则执行相应的操作(在这个例子中,渲染 contact-success 视图)。如果表单数据未通过验证,则渲染 contact 视图,并将模型类实例传递给视图,以便显示错误信息。