?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
  
/*
 * 控制器
 * Controller
 * */
namespace frontend\controllers;
 
use frontend\models\Form;
use yii\web\Controller;
use Yii;
 
class FormController extends Controller {
    //首页
    public function actionIndex()
    {
        $model = new Form();   //实例化自定义的model
        return $this->render('index',['model'=>$model]);  //调用views
    }
 
    //接值
    public function actionAdd()
    {
        $data = Yii::$app->request->post('Form');  //提交的表单数据是Model文件名的下标
        print_r($data);
    }
 
}
 
 
 
/*
 * Model
 * models目录中的文件
 * */
 
namespace frontend\models;
 
use yii\base\Model;
 
class Form extends Model {
 
    public $username;  //用户名
    public $password;  //密码
    public $email;     //邮箱
    public $sex;       //单选
    public $checkbox;  //多选
    public $select;    //下拉
    public $textarea;  //文本域
 
    //规则定义
    public function rules()
    {
        //定义验证规则
        return [
            //定义username的验证规则 required=不得为空 message=提示信息
            ['username','required','message'=>'用户名不得为空'],
            //定义password的验证规则 match=设置正则匹配 pattern=正则表达式 message=提示信息
            ['password','match','pattern'=>'/^[a-zA-Z0-9_-]{6,10}/ ','message'=>'密码为6-10位'],
            //定义emailed的验证规则 match=设置正则匹配 pattern=正则表达式 message=提示信息
            ['email','match','pattern'=>'/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ ','message'=>'邮箱格式不正确'],
            //定义文本域验证规则
            ['textarea','required','message'=>'介绍不可为空']
        ];
    }
 
    //定义各个输入框的名字  可以再这里设置,也可通过试图层页面的 label() 方式设置;
    public function attributeLabels()
    {
        return [
            //'username'=>'用户名',
            //'password'=>'密码',
            //'email'=>'邮箱',
            'sex'=>'性别',
            'checkbox'=>'爱好',
            'select'=>'年龄',
        ];
    }
 
 
 
}
 
 
 
 
/*
 * 视图层
 * views
 * */
 
// 用ActiveForm 小部件用来显示表单
$form = \yii\widgets\ActiveForm::begin([        //表单开始
    'id'=>'login_form',                         //设置表单id
    'options'=>['class'=>'form-horizontal'],    //设置表单class属性
    'action'=>'?r=form/add',                    //设置提交地址
    'method'=>'post'                            //设置提交方式,默认post提交
]);
 
//input输入框  ,所有方法都可以设置数组参数用来定义属性 ['下标(属性名)'=>'值(属性值)'] 也可去掉
echo $form->field($model,'username')->label("用户名")->textInput();
 
//密码框  ,所有方法都可以设置数组参数用来定义属性 ['下标(属性名)'=>'值(属性值)']
echo $form->field($model,'password')->label("密码")->passwordInput(['style'=>"width: 200px;"]);
 
//输入框格式也可这样定义  第一个参数为输入框类型 第二个参数为数组['下标(属性名)'=>'值(属性值)']
echo $form->field($model,'email')->label("邮箱")->input('text',['style'=>"width: 200px;"]);
 
//单选框设置默认选中
$model->sex='1';
 
//单选框设置 radioList参数是一个数组['value'=>'选项']  ,所有方法都可以设置第二个参数用来定义属性 ['下标(属性名)'=>'值(属性值)']
echo$form->field($model,'sex')->radioList(['1'=>'男','0'=>'女']);
 
//多选框设置默认选中
$model->checkbox=['1','2'];
 
//多选框   checkboxList参数是一个数组['value'=>'选项']   ,所有方法都可以设置第二个参数用来定义属性 ['下标(属性名)'=>'值(属性值)']< BR>echo$form->field($model,'checkbox')->checkboxList(['1'=>'唱歌','2'=>'吃法','3'=>'睡觉']);
 
//下拉框  dropDownList参数是一个数组  ,所有方法都可以设置第二个参数用来定义属性 ['下标(属性名)'=>'值(属性值)']
$array=[];
for($i=10;$i<20;$i++){$array[$i]=$i; }
echo $form->field($model,'select')->dropDownList($array,['style'=>"width: 200px;",'prompt'=>'请选择']);
 
 
//文本域
echo $form->field($model,'textarea')->label('个人介绍')->textarea(['value'=>'设置value默认显示属性值,也可以设置其它属性']);
 
//提交 设置一个class属性 为 btn btn-primary
echo \yii\helpers\Html::submitButton('提交',['class'=>'btn btn-primary']);
 
\yii\widgets\ActiveForm::end();      //表单结束
 
  
---------------------------------------------------------------------------------------------
唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。