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 相关文章推荐
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
php模拟post提交数据的方法
Feb 12 PHP
php图像处理类实例
Jul 28 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
php简单实现数组分页的方法
Apr 30 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
一个实用的php验证码类
Jul 06 PHP
Laravel 队列使用的实现
Jan 08 PHP
PHP标准库(PHP SPL)详解
Mar 16 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
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
JS动画效果代码3
2008/04/03 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
python映射列表实例分析
2015/01/26 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python常用库大全及简要说明
2020/01/17 Python
如何基于python实现归一化处理
2020/01/20 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
车辆转让协议书
2014/04/15 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript