创建自定义消息时,Laravel自定义请求未捕获规则中的唯一性

时间:2018-08-21 17:37:48

标签: laravel-5.6

我已经阅读了12遍文档,并且创建了以下内容:

class LSDLocationRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'organization_id'  => 'required',
            'name'             => 'required|unique:lsd_locations'
        ];
    }

    public function messages()
    {
        return [
            'name.unique:lsd_locations' => 'The LSD name is already used by a LSD Location.',
        ];
    }
}

在控制器中,我这样做:

public function store(LSDLocationRequest $request, Organization $organization) {
    $request->validated();

    // ...
}

当我第一次以“样本位置”的名称提交此表单时,它会起作用。当我第二次使用相同的名称时,它显示给我:

  

名称已被使用。

我有110%的肯定这是正确的控制器操作。为什么没有显示我的自定义消息?我在表的名称字段上有一个唯一的键。它会忽略我的name.unique:lsd_locations并编写默认消息。

  • 该表存在。
  • 该列存在。
  • 此表上的名称有唯一的约束。

为什么不使用我的消息?为什么使用默认消息?

1 个答案:

答案 0 :(得分:2)

只需将消息更改为:

name.unique

所以应该像这样:

public function messages()
{
    return [
        'name.unique' => 'The LSD name is already used by a LSD Location.',
    ];
}