Laravel 表单验证:手动创建验证器 Draft 1 个改进

问题

在 Laravel 中,除了在请求上使用 validate 方法,听说还可以手动创建验证器来验证数据,该怎么做?

回答

如果不想在请求上使用 validate 方法, 我们可以通过 Validator 门面make 方法手动创建一个验证器。

下面是例子:

<?php

namespace App\Http\Controllers;

use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PostController extends Controller
{
    /**
     * 保存一篇新的博客文章。
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect('post/create')
                        ->withErrors($validator)
                        ->withInput();
        }

        // Store the blog post...
    }
}

可以看到,传给 make 方法的第一个参数是需要验证的数据,第二个参数则是该数据的验证规则。它返回的是一个 Illuminate\Validation\Validator 实例,我们可用其 fails 方法来判断是否通过验证。

如果验证失败,则可以使用 withErrors 方法把错误消息闪存到会话。以这种方法进行重定向后,$errors 变量将在重定向后自动与视图共享,你可将这些错误消息显示给用户。withErrors 方法接收验证器、MessageBag 及 PHP 数组。

参考

本 Wiki 尚未完善,邀您参与 如何撰写一篇高品质的 Wiki?
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!