LARALVER中间件太少了来功能错误

问题描述 投票:0回答:2
这似乎是我经过的ID,这是我的其余代码

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:
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 () {

link到中间件参数文档

    

我建议改变您验证字段的方式。
php laravel
2个回答
1
投票

php artisan make:request UpdateUserRequest

在文件updateuserrequest.php

这个块具有您要验证的所有规则 public function rules() { return [ 'username' => 'required', 'email' => 'required', ... other fields for validation ... ]; }


0
投票
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',

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.