首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少[路由: Admin.update] [URI: Admin/{Admin}]的必需参数

缺少[路由: Admin.update] [URI: Admin/{Admin}]的必需参数
EN

Stack Overflow用户
提问于 2020-11-28 05:39:52
回答 1查看 1.6K关注 0票数 0

我得到了休眠错误。Missing required parameters for [Route: Admin.update] [URI: Admin/{Admin}].只有当我注释edit.blade的形式时,它才会消失。我检查了我做错了什么,但找不到它。

我也检查了我的web.php,但我不知道它是从那里来的。

如果有人能看到这个错误,我会很高兴。

这是我的路线

代码语言:javascript
复制
<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\AdminController;

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

Route::resource('Admin', AdminController::class);

这是我的管理员控制器

代码语言:javascript
复制
<?php

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\User  $user
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function edit(User $user)
    {

        $roles = Role::all();

        return view('Admin.edit', [ 'user' => $user, 'roles' => $roles]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\User  $user
     * @return \Illuminate\Http\RedirectResponse
     */
    public function update(Request $request, User $user)
    {
//        $user->roles()->sync($request->roles);
//
//        return redirect()->route('Admin.index');
    }
}

这是我的编辑刀片。

代码语言:javascript
复制
@extends('layouts.app')

@section('content')

    <div class="admin-first-page">
        <div class="container">
            <h2>User edit page</h2>
            <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam amet aperiam blanditiis consequatur dolore id iste itaque nisi officia reiciendis! Distinctio dolor dolore doloremque esse impedit, iusto nostrum quidem vitae?</p>

            <form action="{{ route('Admin.update', $user) }}" method="post">
                    @method('PUT')
                    @csrf


                    @foreach($roles as $role)
                        <input type="checkbox" name="roles[]" value="{{$role->id}}">
                        <label>{{ $role->name }}</label>
                    @endforeach

                <button type="submit" class="btn btn-primary">
                    Update
                </button>
           </form>

        </div>
    </div>

@endsection
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-28 05:53:33

您必须将控制器方法的类型提示参数与路由参数名称相匹配,在本例中,它将是Admin。因此,您的edit方法需要:

代码语言:javascript
复制
public function edit(User $Admin)
{
    return view('Admin.edit', ['user' => $Admin, ...]);
}

此时,您将获得一个不存在的User模型实例作为依赖注入,而不是路由模型绑定,因为Admin$user不匹配。因此,您将一个null值传递给route帮助器:

代码语言:javascript
复制
route(..., $user);

因为$user是一个不存在的模型实例,所以它的"id“是null,您不能将nulls传递给路由帮助器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65044112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档