laravel - 通过 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');
}
它将如何修复?
解决方案
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',
];
}
推荐阅读
- c++ - boost::asio 数据拥有`ConstBufferSequence`
- python - 这将是什么代码?你必须用python解决
- windows - 如何记录CMD输出?
- android - Android Studio Portable 设置中的 Flutter Doctor 问题“未找到 Android Studio”
- python-3.x - BayesSearchCV 在 SGDClassifier 参数调整期间不起作用
- java - 我如何访问paintcomponent graphics g 变量以从其他方法中绘制东西?
- javascript - 如何更有效地将这些任务分配到批次中?
- css - 前端 - 当我们减小缩放大小时,为什么某些网站会改变它们的外观
- typescript - Vue - 在工作区和独立中转到定义
- android - 解决了依赖配置“:app:myappDebugApiElements”后无法创建变体“android-manifest-metadata”