Laravel表单验证字段映射

以下程序是一个验证文章的标题和内容字段的验证类。

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'  =>  '内容',
        ];
    }
}
上一篇:VUE学习二,绑定元素v-bind attribute


下一篇:05、Java模式--原型模式