说到模型都是和动态数据相关的。
动态数据呢,一般为用户请求提交上来的数据譬如通过表单提交还有就是用户请求查询的数据这时候要去缓存,数据库...等查数据然后展示出来。上次呢我们写了一个零基础入门的教程,里面有个添加文章的表单,中间有个数据校验没有,也就说用户可以提交标题和内容都为空新文章,要想添加这功能,必须在前端用js做一个校验,在后端入数据库之前对数据做一个判断。
Yii在模型这块就考虑数据校验,只要模型设置好规则不仅仅后端校验只要一个函数调用,如果你利用Yii2组件,连前端校验的js都给你生成好,你只要照着模板传参即可。一个动作,一个视图,外加一个模型搞定(看清三个所在的位置)。
我们先来看一下模型 ArticleForm.php
这个模型很简单 title和content 两个属性,而且这两个属性在校验规则为不能为空(在model的 rules 方法中按模板返回格式数组)
我们看一下 动作
这里$model->validate() 就是后端的验证,如果不通过的话可以打印 $model->errors 数组获取错误信息,通常我们会在下面用session组件的setflash方法在前端展示第一条错误信息。
最后我们看一下,视图部分代码:
这一部分就没有用html去写代码,而且用了yii2的组件来生成代码,好处就是简短且前端校验的js也会帮你生成,大家访问网站的时候可以发f12看一下源码。
最后的效果如下
本节涉及了很多Yii2 的特定用法,譬如 模型的属性规则、动作中的模型的属性的批量赋值,模型的规则校验方法,视图中使用了布局以及的ActiveForm,Html组件的使用,这些都是写好在yii的库文件中的,我们只要按照模板去使用,当然需要去了解这些模板(大家可以看侧栏的权威指南,或者魏西老师的视频来掌握)才能使用。使用模板代码会使我们的代码变的非常少而且简单。
当然Yii2 也有一套脚手架Gii 是根据数据库的中表来生成模型,字段即属性,字段的规则也会自动生成。对于动作CRUD还有搜索 都会相应生成代码,大家看生成的代码也能学到Yii2很多的模板写法,下一节我们就讲Gii生成代码