以下程序是一个验证文章的标题和内容字段的验证类。
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' => '内容',
];
}
}