Middleware:
public function handle(Request $request, Closure $next, $id)
{
if($request->input('username') == NULL) {
return redirect()->route('admin.members.view', $id)->with('error', 'You must enter a username for this user in order to update their account!');
} elseif($request->input('email') == NULL) {
return redirect()->route('admin.members.view', $id)->with('error', 'You must enter a email for this user in order to update their account!');
} elseif($request->input('admin') == NULL) {
return redirect()->route('admin.members.view', $id)->with('error', 'You must select whether this user is a root admin or not in order to update their account!');
} elseif($request->input('banned') == NULL) {
return redirect()->route('admin.members.view', $id)->with('error', 'You must select whether this user is banned or not in order to update their account!');
} elseif($request->input('role') == NULL) {
return redirect()->route('admin.members.view', $id)->with('error', 'You must select a role for this user in order to update their account!');
}
return $next($request);
}
kernel:
'AdminUserUpdate' => \App\Http\Middleware\AdminUserUpdate::class,
Route::middleware(['AdminUserUpdate'])->group(function () {
Route::post('/app/members/{id}/submit', 'App\Http\Controllers\Admin\Members\IndexController@Submit')->name('admin.members.submit');
});
我的ID通过了,因此我可以将它们返回到特定用户ID的视图页面,但是由于某种原因,它似乎不喜欢这样。有人有任何想法吗?
Middlewares不读取路由参数。使用结肠将参数传递到中间件。Route::middleware(['AdminUserUpdate:123'])->group(function () {
我建议改变您验证字段的方式。
store
方法内,只需要此行才能在验证后操纵所有数据:
$validated = $request->validated();
对于自定义消息,将其添加到您的
UpdateUserRequest
:
public function messages()
{
return [
'username.required' => 'You must enter a username for this user in order to update their account!',
'email.required' => 'You must enter a email for this user in order to update their account!',
... and other validation messages ...
];
}
有关验证表格的更多详细信息和方法,请检查链接:
form请求验证I为Laravel 11和12开发人员找到了解决方案。 值得注意的是,官方Laravel 11文档对中间件的注册不完整(
Https://laravel.com/docs/11.x/middlewarewarewware#middleware-parameters) 这种中间件的完整注册还必须通过中间件注册中的变量,在这种情况下:
'AdminUserUpdate' => \App\Http\Middleware\AdminUserUpdate::class,
shold be:
'AdminUserUpdate' => \App\Http\Middleware\AdminUserUpdate::class.':id',