Laravel验证器的使用

Laravel5.6的表单验证器使用

首选要有个页面:

使用bootstrap和jquery

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="/css/bootstrap.css">
    <link rel="stylesheet" href="/css/bootstrap-theme.css">
    <title>添加用户</title>
</head>
<body>
<br>
    <div class="container">
        @if($errors->all())
        <div class="panel panel-danger">
            <div class="panel-heading">
                   <ul>
                       @foreach($errors->all() as $error)
                           <li>
                               {{$error}}
                           </li>
                        @endforeach
                   </ul>
            </div>
        </div>
        @endif
        <div class="panel panel-success">
            <div class="panel-heading">
                <h3 class="panel-title">添加用户</h3>
            </div>
            <div class="panel-body">
                <form action="{{route('user.adduser')}}" method="post" class="form-horizontal" role="form">
{{--                    csrf验证--}}
                    {{csrf_field()}}
                    <div class="form-group">
                        <label class="col-sm-2 control-label">用户名</label>
                        <div class="col-sm-10">
                            <input type="text" name="username" class="form-control" value="{{old('username')}}" title="">
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-2 control-label">密码</label>
                        <div class="col-sm-10">
                            <input type="text" name="password" class="form-control" value="" title="">
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-2 control-label">重复密码</label>
                        <div class="col-sm-10">
                            <input type="text" name="password_confirmation" class="form-control" value="" title="">
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-2 control-label">邮箱</label>
                        <div class="col-sm-10">
                            <input type="text" name="email" class="form-control" value="{{old('email')}}" title="">
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-sm-10 col-sm-offset-2">
                            <button type="submit" class="btn btn-primary">Submit</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>


    </div>
</body>
<script src="/js/bootstrap.js"></script>
<script src="/js/jquery.js"></script>
</html>

一、用控制器中的$this->validate方式去验证表单

创建路由

/*
 *添加 用户
 */
//显示
Route::get('adduser','UserController@index')->name('user.adduser');
//添加操作
Route::post('adduser','UserController@addSave')->name('user.adduser');

创建控制器

php artisan make:controller UserController
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests\UserRequest;
class UserController extends Controller
{
    //显示用户
    public function index()
    {
        return view('user.index');
    }

//   添加用户
    public function addSave( Request $request)
    {
        $input = $this->validate($request,[
            //验证规则
//            验证字段 => 验证规则  多个规则用 | 隔开
            'username' => 'required',
//            comfirmed 必须要在第一次输入密码中
            'password' => 'required|between:2,8|confirmed',
//            确认密码字段的格式必须是 密码字段_confirmation
            'password_confirmation' => 'required',
            'email' => 'required|email'
        ],[
            //汉字提示,默认英文,可选
//            验证字段.验证规则 => 所提示的汉字
            'username.required' => '用户名不能为空!',
            'password.required' => '密码不能为空!',
            'password.between' =>'密码需要在2到8位之间',
            'password.confirmed'=> '两次密码不一致',
            'password_confirmation.required' => '确认密码不能为空!',
            'email.required' => '邮箱不能为空!',
            'email.email' => '邮箱格式不正确!'
        ]);
        dd($request->all());
    }
}

二、独立方式去验证表单

创建控制器

php artisan make:controller UserController
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Validator;

use App\Http\Requests\UserRequest;
class UserController extends Controller
{
    //显示用户
    public function index()
    {
        return view('user.index');
    }

//   添加用户
    public function addSave(Request $request)
    {
        $validate = Validator::make($request->all(),[
            //验证规则
//            验证字段 => 验证规则  多个规则用 | 隔开
            'username' => 'required',
//            comfirmed 必须要在第一次输入密码中
            'password' => 'required|between:2,8|confirmed',
//            确认密码字段的格式必须是 密码字段_confirmation
            'password_confirmation' => 'required',
            'email' => 'required|email'
        ],[
            //汉字提示,默认英文,可选
//            验证字段.验证规则 => 所提示的汉字
            'username.required' => '用户名不能为空!',
            'password.required' => '密码不能为空!',
            'password.between' =>'密码需要在2到8位之间',
            'password.confirmed'=> '两次密码不一致',
            'password_confirmation.required' => '确认密码不能为空!',
            'email.required' => '邮箱不能为空!',
            'email.email' => '邮箱格式不正确!'
        ]);
        if(validate->fails()){
            return redirect()->black()->withErrors($validate);
        }
    }
}

三、验证器

创建验证器

php artisan make:request UserRequest

在验证器里写验证规则

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //验证规则
//            验证字段 => 验证规则  多个规则用 | 隔开
            'username' => 'required',
//            comfirmed 必须要在第一次输入密码中
            'password' => 'required|between:2,8|confirmed',
//            确认密码字段的格式必须是 密码字段_confirmation
            'password_confirmation' => 'required',
            'email' => 'required|email'
        ];
    }

    //自定义提示
    public function messages()
    {
        return [
//汉字提示,默认英文,可选
//            验证字段.验证规则 => 所提示的汉字
            'username.required' => '用户名不能为空!',
            'password.required' => '密码不能为空!',
            'password.between' =>'密码需要在2到8位之间',
            'password.confirmed'=> '两次密码不一致',
            'password_confirmation.required' => '确认密码不能为空!',
            'email.required' => '邮箱不能为空!',
            'email.email' => '邮箱格式不正确!'
            ];
    }
}

在控制器中使用,如下:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests\UserRequest;
class UserController extends Controller
{
    //显示用户
    public function index()
    {
        return view('user.index');
    }

//   添加用户
    public function addSave(UserRequest $request)
    {

        dd($request->all());
    }
}

效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值