**YII**系列三建立表单

来源:互联网 发布:软件测试必备工具 编辑:程序博客网 时间:2024/06/01 10:58

>数据流图




>创建表单过程中的收获


>>创建模型类的作用
创建模型即类
按规则自动验证,通过rule()函数
通过小部件自动生成html,widget小部件

>>命名空间
namespace声明命名空间
use调用类和模板和小部件




>>感觉controller就像大脑核心,负责各个数据处理,数据分流,文件调配


>>控制器类的方法实现

在Jikecontroller里面定义了Jikecontroller类继承了controller类想当于控制器
里面含有action()的方法,可以处理数据。

>>模板类的属性和方法
在models里定义了JikeForm类继承了model类,想当于数据库类
里面有很多数据和方法。

>>创建表单使用到的函数及其意义
Yii:$app->request->post()访问输入表单的函数
model->rule()的方法,可以验证表单数据类型
model->load()给对象赋值,括号中填写对象对应的值
model->validate()验证model对象的数据是否合法
$this->render('index-two',['model'=>$model])第一参数,视图中渲染的文件,第二个参数,传给视图的数据。


>controllers/JikeController.php


<span style="font-size:14px;"><?phpnamespace app\controllers;//controllers的命名空间,就是对应的app文件夹路径use Yii;use yii\web\Controller;//使用控制器基类use app\models\JikeForm;//使用模板来处理数据class JikeController extends Controller{     public function actionIndex(){         $model = new JikeForm();//对model里面的类进行初始化         if($model->load(Yii::$app->request->post())&&$model->validate())         {             return $this->render('index-two',['model'=>$model]);//如果接收到数据则交给index2进行渲染         }else{             return $this->render('index',['model'=>$model]);//如果没有收到数据,则交个index1进行渲染         }    }}?></span>

//控制核心代码,负责联系各个文件,实现了数据的分流,控制核心

//注意命名规范,文件名为与类名相同,方法名以action开始

//注意使用命名空间namespace,注意包含基类的头文件use

//由于controllers负责整理整个文件的关系,所以要包含模板文件


>models/JikeForm.php


<span style="font-size:14px;"><?phpnamespace app\models;// 模板的命名空间use Yii;use yii\base\Model; //使用模板的基类class JikeForm extends Model{    public $name;    public $pass;    public $email;    public $sex;    public $edu;    public $hobby;    public $info;    public function rules(){        //可以验证URL等很多内容,rule()函数的详细规则查看手册        return [            [['name','pass','email','sex','edu','hobby','info'],'required'],            ['email','email','message'=>'shiyouxiang'],            ['name','string','length'=>[2,10]]        ];    }    public function attributeLabel(){        return[            'name'=>'名称',            'pass'=>'密码',            'sex'=>'性别',            'email'=>'邮箱'        ];    }    }</span>

//使用键值对构成的数组进行赋值,使用键值对构成的数组进行性质的定义




>views/Jike/index1.php


<span style="font-size:14px;"><?php//生成表单,使用小部件//表单的形式,就按这个来别想太多use yii\helpers\Html;use yii\widgets\ActiveForm;?><?php $form = ActiveForm::begin();?>    <?= $form -> field($model,'name')->textInput(['style'=>'width:200px;'])?>    <?= $form -> field($model,'pass')->passwordInput(['style'=>'width:200px;'])?>    <?= $form -> field($model,'email')->textInput(['style'=>'width:200px;'])?>    <?= $form -> field($model,'sex')->radioList(['1'=>'male','2'=>'female'])?>    <?= $form -> field($model,'edu')->dropDownList(['1'=>'大学','2'=>'中学','3'=>'小学'],['style'=>'width:200px;'])?>    <?= $form -> field($model,'hobby')->checkboxList(['篮球'=>'篮球','排球'=>'排球'])?>    <?= $form -> field($model,'info')->textarea(['rows'=>3,'style'=>'width:200px;'])?>    <div class = "form-group">        <?= Html::submitButton('Submit',['class'=>'btn btn-primary'])?><?php $form = ActiveForm::end();?></span>
//键值对说哦名属性,注意这种形式 get

>views/Jike/index2.php


<span style="font-size:14px;"><?php    use yii\helpers\Html    //有一个很严重的问题,index向controller里边返回的是数组中的键名而非键值?><ul><li> <?php echo $model -> name;?></li><li> <?php echo $model -> sex;?></li><li> <?= Html::encode($model -> email)?></li><li> <?php echo $model -> edu;?></li><li> <?= Html::encode($model -> info)?></li></ul></span>

//两种输出方式 前者是php里面的echo

//后者<?= ?>等价于<?php echo ?>,中间使用html的方式进行输出




0 0
原创粉丝点击