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开发需要注意的安全问题
Sep 01 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
php通过session防url攻击方法
Dec 10 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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中使用redis队列操作实例代码
2013/02/07 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python 返回汉字的汉语拼音
2009/02/27 Python
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python实现决策树分类(2)
2018/08/30 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
python游戏开发的五个案例分享
2020/03/09 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
what is the difference between ext2 and ext3
2015/08/25 面试题
人力资源行政经理自我评价
2013/10/23 职场文书
降价通知函
2015/04/23 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python