首页 > 解决方案 > 通过 FormRequest (Laravel 6) 更新时的验证错误

问题描述

我为我的大厅创建了一个 FormRequest,但是当我尝试更新 slug 时,我的标题显示验证错误“您已经输入了一次大厅名称。”。这些是我的代码:

class AdminHall extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'title' => 'required|unique:halls,title|min:2',
            'slug' => 'required|alpha_dash|unique:halls,slug|min:2',
        ];
    }
    public function messages()
    {
        return [
            'title.required' => 'Entered the Hall name.',
            'title.unique' => 'You have enter the Hall name once.',
            'title.min' => 'At least 2 char!',
            'slug.alpha_dash' => 'Use dash instead space.',
            'slug.unique' => 'URL used once.',
            'slug.min' => 'At least 2 char!',
        ];
    }
}

我的控制器:

public function update(AdminHall $request, $id)
    {
        $hall = Hall::find($id);
        $hall->title = $request->title;
        $hall->content = $request->content;
        $hall->address = $request->address;
        $hall->tell = $request->tell;
        $hall->latitude = $request->latitude;
        $hall->longitude = $request->longitude;
        $hall->slug = $request->slug;
        $hall->save();
        Session::flash('success', 'Saved!');
        return redirect()->route('hall.index');
    }

它将如何修复?

标签: laravelvalidation

解决方案


public function rules()
{
    $hallId = request()->input('id');

    return [
        'title' => ['required', 'min:2', Rule::unique('halls')->ignore($hallId)],
        'slug' => 'required|alpha_dash|unique:halls,slug|min:2',
    ];
}

推荐阅读