return redirect() 在验证失败后不工作
return redirect() is not working after a failed validation
我有一个表单,用户可以在其中编辑分支机构的信息,一旦用户提交了该表单,update() 方法就会检查所提交数据的有效性,例如每个订阅者的描述必须是唯一的。虽然验证有效,但如果验证失败,它不会重定向到我想要的确切 url/page。它保持相同的编辑形式。
这是我的 update() 方法的代码:
public function update(Request $request, $id)
{
$description = $request->input('description');
$message = $request->input('message');
$subscriber_id = auth()->user()->subscriber_id;
$messages = [
'description.unique' => 'Branch already exists!',
];
$this->validate($request, [
'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
return $query->where('subscriber_id', $subscriber_id);
})
], $messages);
Branch::where('id', $id)->update([
'description' => $description,
'message' => $message,
]);
return redirect('branches')->with('success', 'Branch info successfully updated!');
}
注意:编辑表单的url是/branch/edit/{id}
,而提交后我要重定向的页面是/branches
。
我的验证有误吗?我错过了什么吗?
谢谢! :)
根据 laravel docs,您可以使用 Validator facade
重定向到不同的路由
public function update(Request $request, $id)
{
$description = $request->input('description');
$message = $request->input('message');
$subscriber_id = auth()->user()->subscriber_id;
$messages = [
'description.unique' => 'Branch already exists!',
];
$validator = Validator::make($request->all(), [
'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
return $query->where('subscriber_id', $subscriber_id);
})
],
$messages);
if ($validator->fails()) {
return redirect('/branches')
->withErrors($validator)
->withInput();
}
Branch::where('id', $id)->update([
'description' => $description,
'message' => $message,
]);
return redirect('branches')->with('success', 'Branch info successfully updated!');
}
确保在控制器文件的开头使用 Validator facade use Validator;
我有一个表单,用户可以在其中编辑分支机构的信息,一旦用户提交了该表单,update() 方法就会检查所提交数据的有效性,例如每个订阅者的描述必须是唯一的。虽然验证有效,但如果验证失败,它不会重定向到我想要的确切 url/page。它保持相同的编辑形式。
这是我的 update() 方法的代码:
public function update(Request $request, $id)
{
$description = $request->input('description');
$message = $request->input('message');
$subscriber_id = auth()->user()->subscriber_id;
$messages = [
'description.unique' => 'Branch already exists!',
];
$this->validate($request, [
'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
return $query->where('subscriber_id', $subscriber_id);
})
], $messages);
Branch::where('id', $id)->update([
'description' => $description,
'message' => $message,
]);
return redirect('branches')->with('success', 'Branch info successfully updated!');
}
注意:编辑表单的url是/branch/edit/{id}
,而提交后我要重定向的页面是/branches
。
我的验证有误吗?我错过了什么吗?
谢谢! :)
根据 laravel docs,您可以使用 Validator facade
重定向到不同的路由public function update(Request $request, $id)
{
$description = $request->input('description');
$message = $request->input('message');
$subscriber_id = auth()->user()->subscriber_id;
$messages = [
'description.unique' => 'Branch already exists!',
];
$validator = Validator::make($request->all(), [
'description' => Rule::unique('branches')->where(function ($query) use($subscriber_id) {
return $query->where('subscriber_id', $subscriber_id);
})
],
$messages);
if ($validator->fails()) {
return redirect('/branches')
->withErrors($validator)
->withInput();
}
Branch::where('id', $id)->update([
'description' => $description,
'message' => $message,
]);
return redirect('branches')->with('success', 'Branch info successfully updated!');
}
确保在控制器文件的开头使用 Validator facade use Validator;