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语法(4)
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
php fckeditor 调用的函数
Jun 21 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
PHP生成图片验证码功能示例
Jan 12 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
简单学习vue指令directive
2016/11/03 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
详解Python中的type()方法的使用
2015/05/21 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python实现粒子群算法的示例
2021/02/14 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
标准化管理实施方案
2014/02/25 职场文书
新学期决心书
2014/03/11 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
工程管理英文求职信
2014/03/18 职场文书
音乐教师个人总结
2015/02/06 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android