Laravel使用记录(八)表单验证(一)

11 篇文章 0 订阅
10 篇文章 0 订阅
11.表单验证

首先我们新建个路由

Route::match(['get','post'], 'register', 'IndexController@register');

对match陌生吗?可以去看看路由章节,因为需要register自己处理get和post两种请求,所以我们使用match。

接着我们新建对应的register方法

    public function register()
    {
        return view('home.index.register');
    }

视图

<form method="post" action="{{url('register')}}">
	<p>username:<input type="text" name="username"/></p>
    <p>password:<input type="password" name="password"/></p>
    <p>{{ csrf_field() }}
    <input type="submit" value="submit"></p>
</form>

别忘了表单令牌。

添加验证规则

如何验证?其实Laravel已经提供我们便捷的验证方式。
控制器方法

    public function register(Request $request)
    {
        if ($request->method() == 'POST') {
            $this->validate($request, [
                'username'=>'required|alpha_dash|min:6',
                'password'=>'required|alpha_dash|min:6',
            ]);
        }
        return view('home.index.register');
    }

当请求为POST的时候,我们通过validate方法来进行表单字段的验证。第二个参数是一个数组,用来定义需要验证的字段。键名为字段名称,键值为需要验证的类别。例如上述就是验证字段名称为username和password,验证内容为
required:验证的字段必填
alpha_dash:验证的字段只能包含字母、数字、破折号( - )以及下划线( _ )
min:6:验证的字段最小为6位
每种验证规则以 | 隔开。
以上的验证规则均为Laravel内置的规则,更多规则可以参考这里

虽然书写了验证规则,但是点击提交按钮的时候除了页面刷新了,其它好像什么都没发生过一样,如何知道已经验证了,如何知道为什么没有通过验证呢?

显示错误信息

我们可以通过$errors来显示错误信息。
对应视图

@if (count($errors) > 0)
    <div>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
<form method="post" action="{{url('register')}}">
	<p>username:<input type="text" name="username"/></p>
    <p>password:<input type="password" name="password"/></p>
    <p>{{ csrf_field() }}
    <input type="submit" value="submit"></p>
</form>

关于$errors如何使用,文档表单验证中的显示验证错误给我们一个例子,我们可以结合起来。

此时再次提交,如果输入的内容不符合要求,则会出现错误提示。例如我们都输入@@@,则会出现错误提示如下

The username may only contain letters, numbers, and dashes.
The username must be at least 6 characters. 
The password may only contain letters, numbers, and dashes.
The password must be at least 6 characters.

居然出现了4条错误信息,虽然username和password确实不满足alpha_dash和min:6这两种验证规则,但是一般情况,我们在字段在第一次验证失败后就不会继续验证了,Laravel可以实现吗,答案是肯定的。

只显示第一条不满足规则的错误信息

控制器方法

    public function register(Request $request)
    {
        if ($request->method() == 'POST') {
            $this->validate($request, [
                'username'=>'bail|required|alpha_dash|min:6',
                'password'=>'bail|required|alpha_dash|min:6',
            ]);
        }
        return view('home.index.register');
    }

我们只需要添加bail规则到对应的字段即可,此时我们再次输入@@@提交,错误提示如下

The username may only contain letters, numbers, and dashes.
The password may only contain letters, numbers, and dashes

只出现了不满足要求的第一个规则的提示了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值