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

>数据流图




>创建表单过程中的收获


>>创建模型类的作用
创建模型即类
按规则自动验证,通过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;"><?php

namespace 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;"><?php

namespace 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值