学习内容:
创建一个模型代表用户通过表单输入的数据
声明规则去验证输入的数据
在视图中生成一个 HTML 表单
创建模型
模型类 EntryForm
代表从用户那请求的数据, 该类如下所示并存储在 models/EntryForm.php
文件中
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class EntryForm extends Model
{
public $name;
public $email;
public function rules()
{
return [
[['name', 'email'], 'required'],
['email', 'email'],
];
}
}
EntryForm
类包含 name
和 email
两个公共成员, 用来储存用户输入的数据。它还包含一个名为 rules()
的方法, 用来返回数据验证规则的集合。上面声明的验证规则表示:
name
和 email
值都是必须的email
的值必须满足email规则验证
如果你有一个处理用户提交数据的 EntryForm
对象, 你可以调用它的 validate() 方法触发数据验证。 如果有数据验证失败,将把 hasErrors 属性设为 ture, 想要知道具体发生什么错误就调用 getErrors。
<?php
$model = new EntryForm();
$model->name = 'Qiang';
$model->email = 'bad';
if ($model->validate()) {
} else {
}
创建动作
下面你得在 site
控制器中创建一个 entry
操作用于新建的模型。 操作的创建和使用已经在说一声你好小节中解释了。
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\EntryForm;
class SiteController extends Controller
{
public function actionEntry()
{
$model = new EntryForm;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
return $this->render('entry-confirm', ['model' => $model]);
} else {
return $this->render('entry', ['model' => $model]);
}
}
}
该操作首先创建了一个 EntryForm
对象。然后尝试从 $_POST
搜集用户提交的数据, 由 Yii 的 yii\web\Request::post() 方法负责搜集。 如果模型被成功填充数据(也就是说用户已经提交了 HTML 表单), 操作将调用 validate() 去确保用户提交的是有效数据。