通过FormRequest更新时出现验证错误(Laravel 6)
我为我的大厅创建了一个FormRequest,但当我尝试更新slug时,我的标题显示验证错误“您已经输入了大厅名称一次”。 这是我的密码:通过FormRequest更新时出现验证错误(Laravel 6),laravel,validation,Laravel,Validation,我为我的大厅创建了一个FormRequest,但当我尝试更新slug时,我的标题显示验证错误“您已经输入了大厅名称一次”。 这是我的密码: class AdminHall extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'title' =>
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');
}
如何修复它?在使用ID进行更新时,必须将特定模型从唯一验证规则中排除
'title'=>'必需|唯一:大厅,标题'。$this->hall->id.|最小:2',
希望这有帮助我像这样修复它:
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',
];
}
public function rules()
{
$hall = Hall::where('id', '=', $this->hall)->first();
return [
'title' => ['required', 'min:2', Rule::unique('halls')->ignore($hall->id)],
'slug' => ['required', 'min:2', 'alpha_dash', Rule::unique('halls')->ignore($hall->id)],
];
}
我尝试了,但收到了一个错误:尝试获取非对象的属性“id”。我将其更改为
$this->id
,仍然显示验证错误仍然标题验证错误显示“您已输入了一次大厅名称”