Laravel框架表单验证操作实例分析


Posted in PHP onSeptember 30, 2019

本文实例讲述了Laravel框架表单验证操作。分享给大家供大家参考,具体如下:

public function create(Request $request){
  if($request->isMethod('POST')){
    //验证通过后继续进行
    //方法1 控制器验证
    $this->validate($request,[
      'Student.name' => 'required|min:2|max:20',
      'Student.age' => 'required|integer',
      'Student.sex' => 'required|integer',
    ],[
      'required'=>':attribute 为必填项',
      'min' => ':attribute 长度不符合要求',
      'integer' => ':attribute 必须是一个整形',
    ],[ 'Student.name' => '姓名',
      'Student.age' => '年龄',
      'Student.sex' => '性别',
    ]);
    //方法2 Validator类验证
    $validator = \Validator::make($request->input(),[
      'Student.name' => 'required|min:2|max:20',
      'Student.age' => 'required|integer',
      'Student.sex' => 'required|integer',
    ],[
      'required'=>':attribute 为必填项',
      'min' => ':attribute 长度不符合要求',
      'integer' => ':attribute 必须是一个整形',
    ],[ 'Student.name' => '姓名',
      'Student.age' => '年龄',
      'Student.sex' => '性别',
    ]);
    if($validator->fails()){
      return redirect()->back()->withErrors($validator)->withInput();
    }
    //如果验证通过,则继续执行下面的代码
    $data = $request->input('Student');
    if(Student::create($data)){
      return redirect('student/index')->with('success','添加成功');
    }else{
      return redirect()->back();
    }
  }
  return view('student.create');
}

注意Laravel的create方法,需要在model中

设置允许批量赋值:

protected $fillable = ['name','age'];

web中间件有个作用是防止xss攻击,即csrf,需要在页面的表单中增加{{ csrf_field() }},
会生成一个隐藏的input表单,带个token字段。

错误信息的显示:

控制器中的with方法,可以把信息放入session中

return redirect('Student/index')->with('success','添加成功');

页面中的显示:

@if(Session::has('success'))
<div>
  {{ Session::get('success') }}
</div>
@endif
@if(count($errors))
  <div class="alert alert-danger">
    <ul>
      @foreach($errors->all() as $val)
        <li>{{$val}}</li>
      @endforeach
    </ul>
  </div>
@endif

{{$errors->first()}}可以显示第一条错误信息

数据保持:

return redirect()->back()->withErrors($validator)->withInput();

这段代码中的withInput可以把表单提交的信息带回去,

页面中使用old方法:

姓名 :<input type="text" name="Student[name]" value="{{ old('Student')['name'] }}" />
性别 :
@foreach($student->user_sex() as $ind=>$val)
<input type="radio" name="Student[sex]" value="{{$ind}}" {{ old('Student')['sex']==$ind?'checked':'' }} />{{$val}}
@endforeach

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
ip签名探针
Oct 09 PHP
php max_execution_time执行时间问题
Jul 17 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
使用php实现截取指定长度
Aug 06 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
Laravel 自带的Auth验证登录方法
Sep 30 #PHP
laravel 使用auth编写登录的方法
Sep 30 #PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 #PHP
php面试实现反射注入的详细方法
Sep 30 #PHP
laravel5表单唯一验证的实例代码
Sep 30 #PHP
Laravel模糊查询区分大小写的实例
Sep 29 #PHP
基于laravel Request的所有方法详解
Sep 29 #PHP
You might like
Terran兵种对照表
2020/03/14 星际争霸
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
PHP读取Excel类文件
2017/05/15 PHP
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
微信小程序 数据遍历的实现
2017/04/05 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
深入理解Python中变量赋值的问题
2017/01/12 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
用Python开发app后端有优势吗
2020/06/29 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
全球度假村:Club Med
2017/11/27 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
自荐信范文
2013/12/10 职场文书
爱护公物标语
2014/06/24 职场文书
介绍信范文
2015/01/31 职场文书
小学生安全保证书
2015/05/09 职场文书
社区党务工作总结2015
2015/05/19 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL