0

我正在使用 Laravel 8,并且在 Blade 制作了一张这样的表格:

<div class="card-body table-responsive p-0">
    <table class="table table-hover">
        <tr>
            <th>Username</th>
            <th>Email</th>
            <th>Role</th>
            <th>Actions</th>
        </tr>
        @foreach($roles as $role)
            @if(count($role->users))
                @foreach($role->users as $user)
                    <tr>
                        <td>{{ $user->name }}</td>
                        <td>{{ $user->email }}</td>
                        <td>{{ $role->name }} | {{ $role->label }}</td>
                        <td>
                            <form action="{{ route('levels.destroy'  ,$user->id) }}" method="post">
                                @method('DELETE')
                                @csrf

                                <div class="btn-group btn-group-xs">
                                    <a href="{{ route('levels.edit' ,$user->id) }}"  class="btn btn-primary">Edit</a>
                                    <button type="submit" class="btn btn-danger">Delete</button>
                                </div>
                            </form>
                        </td>
                    </tr>
                @endforeach
            @endif
        @endforeach
    </table>
</div>  
    

结果完美显示:

在此处输入图像描述

但是现在我遇到了我指定为它们两个参数的编辑删除按钮的问题。$user->id

当我将鼠标悬停在按钮上时,我可以看到正确定义的用户 ID:

在此处输入图像描述

但是当涉及到使用路由模型绑定的编辑方法时,它没有找到用户:

public function edit(User $user)
    {
        dd($user->id); // return null
    }

但是,如果我不使用 Route Model Binding 而是这样说:

public function edit($id)
        {
            dd($id); // return 1
        }

它正确显示了用户ID!

我不知道为什么路由模型绑定在这里不起作用,所以如果您知道出了什么问题或如何解决此问题,请告诉我...

4

2 回答 2

0

我看到了评论,您的资源控制器名称与您的变量名称“$user”不匹配。

你可以在这里查看官方 laravel 文档。

在您的情况下,这可能会有所帮助;

Route::resource('levels', LevelController::class)->parameters([
    'levels' => 'user'
]);
于 2022-01-11T10:16:09.977 回答
0

您正在尝试访问在这种情况下不知道 id 是什么的用户模型,因此您应该id使用 Get 将用户的喜欢

public function edit($id)
    {
        dd($id); // return null
    }

或通过将其作为 POST 表单发送并得到它

public function edit(Request $request)
    {
        dd($request->id); // return null
    }
于 2022-01-11T10:14:41.363 回答