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 需要掌握的东西 不做浮躁的人
Dec 28 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP 压缩文件夹的类代码
2009/11/05 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python numpy 按行归一化的实例
2019/01/21 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
在校硕士自我鉴定
2014/01/23 职场文书
建房协议书
2014/04/11 职场文书
2014年政协工作总结
2014/12/09 职场文书
保研推荐信格式
2015/03/25 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
为Java项目添加Redis缓存的方法
2021/05/18 Redis
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python