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 相关文章推荐
js下函数般调用正则的方法附代码
Jun 22 PHP
PHP中用hash实现的数组
Jul 17 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
php调用c接口无错版介绍
Mar 11 PHP
PHP开发Apache服务器配置
Jul 15 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
php-beanstalkd消息队列类实例分享
Jul 19 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
php-msf源码详解
Dec 25 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 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
Window下PHP三种运行方式图文详解
2013/06/11 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
javascript 写类方式之六
2009/07/05 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
基于Vue实例对象的数据选项
2017/08/09 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
彻底理解Python list切片原理
2017/10/27 Python
python中kmeans聚类实现代码
2018/02/23 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
五年级语文教学反思
2014/01/30 职场文书
公务员保密承诺书
2014/03/27 职场文书
鼓舞士气的口号
2014/06/16 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Mysql排序的特性详情
2021/11/01 MySQL
SQL Server实现分页方法介绍
2022/03/16 SQL Server
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript