Laravel5.1 框架表单验证操作实例详解


Posted in PHP onJanuary 07, 2020

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

当我们提交表单时 通常会对提交过来的数据进行一些验证、Laravel在Controller类中使用了一个traint:ValidatesRequest。方便我们在控制器中使用验证器。

下面我们就来看一个验证表单的例子。

1 准备

1.1 创建路由

Route::resource('/post', 'PostController');

1.2 创建控制器

php artisan make:controller PostController

1.3 创建视图

在 /views 中创建 /post/create.blade.php 文件,编写如下:

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" >
</head>
<body>
<div class="container">
  <div class="row">
    <div class="col-md-8 col-md-offset-2">
      <div class="panel panel-default">
        <div class="panel-heading">
          创建文章
        </div>
        <div class="panel-body">
          <form action="{{ url("/post") }}" method="POST" class="form-horizontal">
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
            <div class="form-group">
              <label class="col-md-4 control-label">标题</label>
              <div class="col-md-6">
                <input type="text" class="form-control" name="title">
              </div>
            </div>
            <div class="form-group">
              <label class="col-md-4 control-label">内容</label>
              <div class="col-md-6">
                <textarea rows="10" class="form-control" name="content"></textarea>
              </div>
            </div>
            <div class="form-group">
              <div class="col-md-6 col-md-offset-4">
                <button class="btn btn-primary" type="submit">Submit</button>
              </div>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</div>
</body>
</html>

1.4 在PostController中返回create视图

public function create()
{
    return view('post.create');
}

2 开始验证

2.1 validate

我们在store方法中验证表单提交过来的数据,语法是这样的:

validate() 参数:

  1. request:传入请求就好。
  2. rule:规则数组,把我们的验证逻辑写在这里面。
public function store(Request $request)
{
    $this->validate($request, [
      'title' => 'required|min:3',
      'content' => 'required|min:10',
    ]);
    echo '验证通过';
}

↑ 上面的例子如果验证通过 则显示"验证通过" 如果验证没有通过的话Laravel会自动跳转到表单提交页面 并把错误信息闪存到Session中,我们可以修改create.balde.php文件 添加显示错误代码

2.2 显示错误信息

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" >
</head>
<body>
<div class="container">
  <div class="row">
    <div class="col-md-8 col-md-offset-2">
      <div class="panel panel-default">
        <div class="panel-heading">
          创建文章
        </div>
        <div class="panel-body">
          @if (count($errors) > 0)
            <div class="alert alert-danger">
              <ul>
                @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
                @endforeach
              </ul>
            </div>
          @endif
          <form action="{{ url("/post") }}" method="POST" class="form-horizontal">
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
            <div class="form-group">
              <label class="col-md-4 control-label">标题</label>
              <div class="col-md-6">
                <input type="text" class="form-control" name="title">
              </div>
            </div>
            <div class="form-group">
              <label class="col-md-4 control-label">内容</label>
              <div class="col-md-6">
                <textarea rows="10" class="form-control" name="content"></textarea>
              </div>
            </div>
            <div class="form-group">
              <div class="col-md-6 col-md-offset-4">
                <button class="btn btn-primary" type="submit">Submit</button>
              </div>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</div>
</body>
</html>

3 手动创建Validator

public function store(Request $request)
  {
//    $this->validate($request, [
//      'title' => 'required|min:3',
//      'content' => 'required|min:10',
//    ]);
    $validator = Validator::make($request->all(), [
      'title' => 'required|min:3',
      'content' => 'required|min:10',
    ]);
    if ($validator->fails()) {
      return redirect('post/create')
        ->withErrors($validator)
        ->withInput();
    }
    echo '验证通过';
  }

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

PHP 相关文章推荐
php下通过POST还是GET来传值
Jun 05 PHP
php 操作调试的方法
Jul 12 PHP
php实现文件下载功能的几个代码分享
May 10 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php设置页面超时时间解决方法
Sep 22 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
YII框架批量插入数据的方法
Mar 18 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
PHP字符串与数组处理函数用法小结
Jan 07 #PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 #PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 #PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 #PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 #PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 #PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 #PHP
You might like
PHP中的加密功能
2006/10/09 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python3遍历目录树实现方法
2015/05/22 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python的移位操作实现详解
2019/08/21 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
门卫岗位安全职责
2013/12/13 职场文书
求职自荐信
2013/12/14 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL