以下程序是一个验证文章的标题和内容字段的验证类。
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ArticleRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } public function messages() { return [ 'title.required' => '标题必填', 'title.unique' => '标题已存在', 'title.max' => '标题长度不能超过:max', ‘body.required’ => '内容必填', ]; } }
验证的字段是title和body。我们自定义了错误提醒。如标题字段是必须的,未填的话,会提示「标题必填」。如果标题长度超过了定义的255长度,则会提示「标题内容不能超过255」。
但是,随着验证字段越来越多,验证的规则越来越多,应该有这么一个功能,对title字段做映射,映射成标题,那么就不用每次验证「title」字段时都要写上「标题」与之匹配。
Laravel也的确提供了这么个功能,下面分享给大家。分为2种方式:
1.控制器中
$this->validate($request,[ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ], [ 'title.required' => ':attribute必填', 'title.unique' => ':attribute已存在', 'title.max' => ':attribute长度不能超过:max', ‘body.required’ => ':attribute必填', ], [ 'title' => '标题', 'body' => '内容', ]);
2.验证类中
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class OrderRequest extends FormRequest { ... public function messages() { return [ 'title.required' => ':attribute必填', 'title.unique' => ':attribute已存在', 'title.max' => ':attribute长度不能超过:max', ‘body.required’ => ':attribute必填', ]; } public function attributes() { return [ 'title' => '标题', 'body' => '内容', ]; } }