(三)Laravel学习笔记之验证Validator

引言:在Controller内,Laravel使用ValidatesRequests 这个trait来做请求验证

1、对请求进行验证,如表单的post请求提交,并且视图模板中显示验证信息
先在route.php中写两个路由:

 Route::get('laravel/test/validator', 'PHPTestController@getValidator');
 Route::get('laravel/test/validator', 'PHPTestController@postValidator');

再在PHPTestController.php中写getValidator方法,返回一个表单提交页面(使用bootstrap库来做样式和交互):

/app/Http/PHPTestController.php:
public function getValidator(){
    return view('validator.validator');
}
/resources/validator/validator.blade.php:
<html>
    <head>
        <title>Laravel Validator Test</title>
        <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <form action="{{url('laravel/test/validator')}}" method="POST">
                        <legend style="text-align: center">表单提交</legend>
                        <label style="margin-left: 50%">Company Name</label>
                        <input type="text" name="name">
                        <button type="submit" class="btn btn-success">Submit</button>
                    </form>
                </div>
            </div>
        </div>

        <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
        <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    </body>
</html>

表单提交页面:
这里写图片描述

在PHPTestController.php中写上postValidator方法:

public function postValidator(Request $request){
    $this->validate($request, [
        'name' => 'required',
        ]);
    dd('form post success!!!');
}

input里不填,点击提交按钮,不会打印”form post success!!!”,说明$this->validate()函数工作了,但怎么打印错误信息:

/resources/validator/validator.blade.php,在</form>标签后面加上显示错误信息:
@if(count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach($errors->all() as $error)
                <li>{{$error}}</li>
            @endforeach
        </ul>
    </div>
@endif

这里写图片描述
其中,Laravel在每次请求中把 errorssession errors是可用的不会报错,官方文档原话:”So, it is important to note that an $errors variable will always be available in all of your views on every request“。
Laravel提供了很多验证规则可用,也非常好用。玩下整数规则,修改试图代码:

<legend style="text-align: center">表单提交</legend>
<label style="margin-left: 50%">Name</label>
<input type="text" name="name">
<label style="margin-left: 50%">Age</label>
<input type="text" name="age">

修改下验证规则:

$this->validate($request, [
            'name' => 'required',
            'age'  => 'required|integer',
]);

则age必须输入为整数:
这里写图片描述

3、验证数组形式的表单,显示验证信息

4、定制一个表单请求验证类,使控制器代码简约

5、定制自己的验证规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值