Controller控制器层代码

  1. <?php
  2. namespace frontend\controllers;
  3. use frontend\models\UserForm;
  4. class UserController extends \yii\web\Controller
  5. {
  6. public function actionIndex()
  7. {
  8. $model = new UserForm;
  9. if ($model->load(\Yii::$app->request->post()) && $model->validate())
  10. {
  11. echo "通过";
  12. }
  13. return $this->render('index',[
  14. "model" => $model,
  15. ]);
  16. }
  17. }

VIEWS视图层代码

  1. <?php
  2. use yii\helpers\Html;
  3. use yii\widgets\ActiveForm;
  4. ?>
  5. <h1>YII2.0使用ActiveForm</h1>
  6. <?php $form = ActiveForm::begin([
  7. 'action' => ['log/login'], //提交地址(*可省略*)
  8. 'method'=>'post',    //提交方法(*可省略默认POST*)
  9. 'id' => 'login-form', //设置ID属性
  10. 'options' => [
  11. 'class' => 'form-horizontal', //设置class属性
  12. 'enctype' => 'multipart/form-data' //文件上传时添加该编码
  13. ],
  14. 'fieldConfig' => [
  15. 'template' => '<div class="form-group"><center><label class="col-md-2 control-label" for="type-name-field">{label}</label></center><div class="col-md-8 controls">{input}{error}</div></div>'
  16. ],  //设置模板的样式
  17. ]); ?>
  18. <!--文本框 (*验证长度可在这里写 maxlength 这样就不用再 model 里面写了 *)-->
  19. <?= $form->field($model, 'username',['inputOptions' => ['placeholder'=>'请输入用户名','class' => 'ipt'],'template'=>'<div class="form-group"><div class="col-md-8 controls">{label}{input}{error}</div></div>'])->textInput(['maxlength' => 20,"style"=>"width:200px; height:30px;"]) ?>
  20. <!--密码框 (*不使用他的lable只需要用false把他禁止, 然后你可以自己写*)-->
  21. <h4>密码</h4><?= $form->field($model, 'pwd')->label(false)->passwordInput(['maxlength' => 20,"style"=>"width:200px; height:30px;","placeholder"=>"请输入您的密码"]) ?>
  22. <?= $form->field($model, 're_pwd')->passwordInput(['maxlength' => 20,"style"=>"width:200px; height:30px;","placeholder"=>"请输入您的密码"]) ?>
  23. <!--单选按钮(*设置默认选中*)-->
  24. <?php $model->sex=1; echo $form->field($model, 'sex')->radioList(['1'=>'男','0'=>'女']) ?>
  25. <!--验证邮箱-->
  26. <?= $form->field($model, 'email')->textInput() ?>
  27. <!--下拉框的默认选中使用 prompt 设置 -->
  28. <?= $form->field($model, 'school')->dropDownList(['1'=>'大学','2'=>'高中','3'=>'初中'], ['prompt'=>'请选择','style'=>'width:120px']) ?>
  29. <!--文件上传-->
  30. <?= $form->field($model, 'photo')->fileInput() ?>
  31. <!--复选框 -->
  32. <?= $form->field($model, 'hobby')->checkboxList(['0'=>'篮球','1'=>'足球','2'=>'羽毛球','3'=>'乒乓球']) ?>
  33. <!--文本域-->
  34. <?= $form->field($model, 'remark')->textarea(['rows'=>3]) ?>
  35. <!--隐藏域-->
  36. <?= $form->field($model, 'userid')->hiddenInput(['value'=>3])->label(false); ?>
  37. <?= Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
  38. <?= Html::resetButton('重置', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
  39. <?php ActiveForm::end(); ?>

MODELS层表单验证

  1. <?php
  2. namespace frontend\models;
  3. use Yii;
  4. class UserForm extends \yii\db\ActiveRecord
  5. {
  6. /**
  7. *@param参数
  8. */
  9. public $username;
  10. public $pwd;
  11. public $re_pwd;
  12. public $email;
  13. public $bobby;
  14. public $remark;
  15. public $photo;
  16. public $school;
  17. public $info;
  18. /**
  19. * @inheritdoc
  20. */
  21. public static function tableName()
  22. {
  23. return '{{%user}}';
  24. }
  25. /**
  26. * @inheritdoc
  27. */
  28. public function rules()
  29. {
  30. return [
  31. //验证不能为空
  32. [['username', 'pwd', 'email', 'hobby'], 'required' ,"message"=>"{attribute}不能为空"],
  33. //验证用户唯一
  34. ['username', 'unique', 'targetClass' => '\frontend\models\User', 'message' => '用户名已存在.'],
  35. //验证密码不一致
  36. ['re_pwd', 'compare', 'compareAttribute' => 'pwd', 'message' => '两次密码不一致'],
  37. //验证字符串长度
  38. [['username'],"string", "max"=>"10", "min"=>"5", "tooLong"=>"{attribute}不能大于10个字符", "tooShort"=>"{attribute}不能小于5个字符"],
  39. //验证文件上传的格式
  40. ['photo','file',
  41. 'extensions'=>['jpg','png','gif'],'wrongExtension'=>'只能上传{extensions}类型文件!',
  42. 'maxSize'=>1024*1024*2,  'tooBig'=>'文件上传过大!',
  43. 'skipOnEmpty'=>false,'uploadRequired'=>'请上传文件!',
  44. 'message'=>'上传失败!'
  45. ]
  46. //采用rules 规则验证
  47. ['email', 'email',"message"=>"{attribute}格式错误"],
  48. //方法2:
  49. //正则验证  ['tel','match','pattern'=>'/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})?$/','message'=>"{attribute}邮箱输入有误."],
  50. [['remark'], 'string', 'max' => 200],
  51. ];
  52. }
  53. /**
  54. * @inheritdoc
  55. */
  56. public function attributeLabels()
  57. {
  58. return [
  59. 'user_id' => '自增ID',
  60. 'username' => '用户名',
  61. 'pwd' => '密码',
  62. 're_pwd' => '请再次输入密码',
  63. 'sex' => '性别',
  64. 'photo' => '头像',
  65. 'email' => '邮箱',
  66. 'hobby' => '爱好',
  67. 'school' => '学校',
  68. 'remark' => '备注信息',
  69. ];
  70. }
  71. }

YII2.0使用ActiveForm表单(转)的更多相关文章

  1. yii2之ActiveForm表单使用

    因目前项目并非前后端分离模式,且用到PHP的yii2框架(所有html代码,js较多内嵌在.php文件内多少采用同步提交[喷墨中...]),遂对于前端面上需要用到的yii2小组件一些整理(因是前端若涉 ...

  2. yii2 创建ActiveForm(表单)

    表单的生成表单中的方法    ActiveForm::begin()方法    ActiveForm::end()方法    getClientOptions()方法    其它方法:errorSum ...

  3. yii中调整ActiveForm表单样式

    Yii2中对于表单和字段的支持组件为ActiveForm和ActiveField, <?php $form = ActiveForm::begin([ 'id' => 'login-for ...

  4. <玩转Django2.0>读书笔记:表单

    1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...

  5. 【Django笔记四】Django2.0中的表单

    一.环境版本信息: 操作系统:windows10 Django版本:2.0.5 Python版本:3.6.4 Mysql版本: 5.5.53   安装mysql 二.基础信息 1.App中的模型mod ...

  6. thinkPHP5.0使用form表单提交数据和删除文章,不用TP的提示页面,使用弹出提示信息

    form表单提交数据和删除文章时,TP的默认信息提示页面的看起来不是很好看,想要实现弹窗提示怎么做呢? 前端:可以使用前端的一个知识--iframe,iframe元素会创建包含另外一个文档的内联框架: ...

  7. yii2.0 Activeform表单部分组件使用方法

    文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...

  8. yii2.0 Activeform表单部分组件使用方法 [ 2.0 版本 ]

    文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...

  9. [moka同学笔记]yii2 activeForm 表单样式的修改(二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAEAAANXCAIAAADLkdErAAAgAElEQVR4nOzdfWwc953nef6zwO5Zg8

随机推荐

  1. Nodejs--url模块

    由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. url 模块中的 parse 函数可以用于解析url中的参数. url ...

  2. Vue 项目骨架屏注入与实践

    作为与用户联系最为密切的前端开发者,用户体验是最值得关注的问题.关于页面loading状态的展示,主流的主要有loading图和进度条两种.除此之外,越来越多的APP采用了“骨架屏”的方式去展示未加载 ...

  3. 牛客第二场A-run

    链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 White Cloud is exercising in the playground. Wh ...

  4. Oracle Log Block Size

    Although the size of redo entries is measured in bytes, LGWR writes the redo to the log files on dis ...

  5. oracle配置访问白名单教程

    出于提高数据安全性等目地,我们可能想要对oracle的访问进行限制,允许一些IP连接数据库或拒绝一些IP访问数据库. 当然使用iptables也能达到限制的目地,但是从监听端口变更限制仍可生效.只针对 ...

  6. JSP调试技巧

    我先谈谈: 我的经验就是多装几个服务器,这个查不出错误,用另一个,这个方法很好用. ---------------------------------------------------------- ...

  7. ubuntu12下安装eclipse+pydev +1搜索命令+kill指定进程

    sudo apt-get install eclipse 下载pydev for eclipse 2.8,如果是jre6 解压. sudo nautilus 复制相应的文件夹到/usr/share/e ...

  8. 研究Duilib的实现结构

    第一步:调用RegisterClassEx(): 第二步:调用CreateWindowEx() 第三步:调用ShowWindow(),同时启动消息循环 说明: 1.RegisterClass,Regi ...

  9. MyEclipse常用设置和快捷键

    Java快捷键 1.注释快捷键 先敲/  再敲两个**     Enter 回车 2.system.out.println(); 常用设置 [子类继承父类] [编码字体设置] 删除当前行:ctrl+d ...

  10. python select poll epoll的区别

    select 优点:为最早的异步io处理模块,他可以再linux上和windows上使用,跨平台兼容性好,而poll和epoll都不能在windows系统环境中使用. 缺点:select的机制决定了他 ...