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 相关文章推荐
openPNE常用方法分享
Nov 29 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
php日志函数error_log用法实例分析
Sep 23 PHP
php实例化对象的实例方法
Nov 17 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
js资料prototype 属性
2007/03/13 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
简单的python后台管理程序
2017/04/13 Python
Django如何配置mysql数据库
2018/05/04 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
中国央视网签名寄语
2014/01/18 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
交通违章检讨书
2014/09/21 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers