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 相关文章推荐
一个改进的UBB类
Oct 09 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP中的Streams详细介绍
Nov 12 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
深入理解PHP内核(一)
Nov 10 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
PHP对象克隆clone用法示例
Sep 28 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 strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php7下的filesize函数
2019/09/30 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python编写登陆接口的方法
2017/07/10 Python
python查询mysql,返回json的实例
2018/03/26 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python字典排序的方法
2019/10/12 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
python中property和setter装饰器用法
2019/12/19 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
什么是规则表达式
2012/05/03 面试题
实习鉴定评语
2014/01/19 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android