Laravel 表单验证:手动创建验证器 Draft
问题
在 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 数组。