Yii2.0 ActiveForm 表单应用整理
2016-04-21 16:15
639 查看
今天打算整理用YII框架自己ActiveForm的表单生成方式
如下图所示, 就是一个表单,我自己没有写form,input...
在model文件中:
【下面是rules规则】
//寻求报道
具体学习网址: http://www.getyii.com/doc-2.0/guide/start-forms.html
感想:
我以前都是我们通常的form表单方式,这个用到了activeForm表单方式,还是我了解的太少了,我以为只有后台才会用到这种情况,因为用gii自动生成的curd文件中的form文件有这种方式,原来它们都是通用,只是看你怎么灵活的运用,还有就是我平时做添加表操作,都是单独在model方法中写一个add方法,而现在是利用框架自带的特性,省去了好多的代码。感觉不错....
这是我同事给我说的这种方式,我真学到了,其实啊,在工作中只要你好好干,你会学到好多你不知道的东西,以前当我有任务时,我老认为工作是为公司,有一点时间就想休息,现在啊,想的不是了,我现在就是认为你工作是一方面,还有一方面就是你把它当做你自己的事,你会有不一样的体验,更有不一样的心情,只要每天心情开心了,效率才好,学的才多!所以,加油!现在你是很笨,或许人家给你定位你技术很low,但是你要证明一下,总有一天,你会让他们另眼相看!
如下图所示, 就是一个表单,我自己没有写form,input...
在model文件中:
【下面是rules规则】
public function rules() { return [ [['user_id', 'scope_id', 'cate_id', 'report_status', 'created_at', 'updated_at'], 'integer'], [['report_com_name', 'report_com_address', 'report_com_desc', 'scope_id', 'cate_id', 'report_content', 'report_name', 'report_mobile'], 'required'], [['report_com_url', 'report_com_address'], 'string', 'max' => 200], [['report_content', 'report_com_desc'], 'string', 'max' => 1000], [['report_com_name'], 'string', 'max' => 100], [['report_name'], 'string', 'max' => 30], [['report_mobile'], 'string', 'max' => 11], [['report_email'], 'string', 'max' => 200], ['report_mobile', function ($attribute, $params) { //这是自己写的规则,和框架里的不一样,不能像他们一下,一个数据没填,就直接提示,而自己写的规则需要点击提交后才能去验证 if (strlen($this->$attribute) != 11) { $this->addError($attribute, '手机号码必须是11位'); } }], ]; }// 属性标签
public function attributeLabels() { return [ 'report_id' => '报道ID', 'user_id' => '用户ID', 'scope_id' => '行业分类', 'cate_id' => '报道方向', 'report_com_name' => '公司名称', 'report_com_url' => '公司网址', 'report_com_address' => '公司地址', 'report_com_desc' => '公司简介', 'report_content' => '简述报道内容', 'report_name' => '联系人姓名', 'report_mobile' => '联系方式', 'report_email' => '邮箱', // 'report_status' => 'Report Status', // 'created_at' => 'Created At', // 'updated_at' => 'Updated At', ]; }【模板文件-表单部分代码】
<?php $form = ActiveForm::begin([ 'options' => ['enctype' => 'multipart/form-data', 'class' => ''], 'method' => 'post', ]); ?> <div class="formitem cf"> <?php echo $form->field($model, 'report_com_name', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textInput(['placeholder' => "请输入您公司名称"]) ->label("<i class=\"star\">*</i>{$labels['report_com_name']}", ['class' => "fl"]) ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_com_url', ['template' => "\n{label}{input}"]) ->textInput(['placeholder' => "请输入您公司网址"]) ->label("{$labels['report_com_url']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_com_address', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textInput(['placeholder' => "请输入您公司地址"]) ->label("<i class=\"star\">*</i>{$labels['report_com_address']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_com_desc', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textarea(['placeholder' => "请输入您公司简介"]) ->label("<i class=\"star\">*</i>{$labels['report_com_desc']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'scope_id', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->dropDownList($scopeDatas) ->label("<i class=\"star\">*</i>{$labels['scope_id']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'cate_id', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->dropDownList($cateDatas) ->label("<i class=\"star\">*</i>{$labels['cate_id']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_content', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textarea(['placeholder' => "请输入报道内容"]) ->label("<i class=\"star\">*</i>{$labels['report_content']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_name', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textInput(['placeholder' => "请输入联系人姓名"]) ->label("<i class=\"star\">*</i>{$labels['report_name']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_mobile', ['template' => "\n{label}{input}\n<div class='error'>{error}</div>"]) ->textInput(['placeholder' => "请输入联系方式"]) ->label("<i class=\"star\">*</i>{$labels['report_mobile']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <?php echo $form->field($model, 'report_email', ['template' => "\n{label}{input}"]) ->textInput(['placeholder' => "请输入您的邮箱"]) ->label("{$labels['report_email']}", ['class' => "fl"]); ?> </div> <div class="formitem cf"> <label class="fl"></label> <div class="fl"> <?= Html::submitButton('提交认证', ['class' => 'coarsebtn subbtn']) ?> </div> </div> <?php ActiveForm::end() ?>【当表单数据填写完毕时,在控制器方法中处理方式】
//寻求报道
public function actionSeekReport() { $mEnumScode = new EnumScode(); $mEnumCate = new EnumCate(); $model = new Report(); $scopeData = $mEnumScode->getScopeData(); $cateData = $mEnumCate->getData(); $cateDatas['0'] = '请选择'; $scopeDatas['0'] = '请选择'; if ($scopeData && is_array($scopeData)) { foreach ($scopeData as $key => $value) { if ($value['scope_id'] && $value['scope_name']) { $scopeDatas[$value['scope_id']] = $value['scope_name']; } } } if ($cateData && is_array($cateData)) { foreach ($cateData as $key => $value) { if ($value['cate_id'] && $value['cate_name']) { $cateDatas[$value['cate_id']] = $value['cate_name']; } } } // 提交数据处理 $model->user_id = $this->user->id; //说明: 代码: $model->load(Yii::$app->request->post() 作用: 将表单提交的数据给了model对象 代码: $model->save() 作用: 表单提交验证完后(具体验证就是:model里面的rules方法中写的规则),就进行save保存处理 if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['demands']); } return $this->render('/user/demands/seek_report', [ 'scopeDatas' => $scopeDatas, 'cateDatas' => $cateDatas, 'model' => $model, ]); }
具体学习网址: http://www.getyii.com/doc-2.0/guide/start-forms.html
感想:
我以前都是我们通常的form表单方式,这个用到了activeForm表单方式,还是我了解的太少了,我以为只有后台才会用到这种情况,因为用gii自动生成的curd文件中的form文件有这种方式,原来它们都是通用,只是看你怎么灵活的运用,还有就是我平时做添加表操作,都是单独在model方法中写一个add方法,而现在是利用框架自带的特性,省去了好多的代码。感觉不错....
这是我同事给我说的这种方式,我真学到了,其实啊,在工作中只要你好好干,你会学到好多你不知道的东西,以前当我有任务时,我老认为工作是为公司,有一点时间就想休息,现在啊,想的不是了,我现在就是认为你工作是一方面,还有一方面就是你把它当做你自己的事,你会有不一样的体验,更有不一样的心情,只要每天心情开心了,效率才好,学的才多!所以,加油!现在你是很笨,或许人家给你定位你技术很low,但是你要证明一下,总有一天,你会让他们另眼相看!
相关文章推荐
- php 格式化电话号码
- 通过laravel理解IoC(控制反转)容器和DI(依赖注入)
- ubuntu14.04 下ftp相关操作
- thinkphp 框架下 事务处理+琐行 亲自测试 可用
- LAMP通信测试
- 初学php(一)
- yii2 数据库操作 -转自懒人程序
- ThinkPHP 3.1.2 模板的使用技巧
- ThinkPHP 3.1.2 模板的使用技巧
- ThinkPHP 3.1.2 模板的使用技巧
- 使用PHP QRcode生成二维码广告图
- php 导出数据到excel(缓冲区应用)
- php打印xml格式数据
- 切到 PHP7,我们是如何节省一百万美元的?
- ThinkPHP缓存微信公众号access_token
- PHP SOAP实现WebService
- ThinkPHP多表操作
- 如何在FTP服务器上传和下载文件
- 关于php中json_encode中文乱码问题
- php分享(三十六)mysql中关联表更新