Laravel中缺少路由所需的参数[重复]

Posted

技术标签:

【中文标题】Laravel中缺少路由所需的参数[重复]【英文标题】:Missing required parameters for route in Laravel [duplicate] 【发布时间】:2017-06-09 23:02:42 【问题描述】:

每当我转到此路线时,在我的 laravel 应用程序中:/admin 或 admin/users 我都会收到以下错误消息,但其他路线的工作方式类似于 admin/users/create 或 admin/users/edit:

Missing required parameters for [Route: admin.users.edit] [URI: admin/users/id/edit]. (View: C:\xampp\htdocs\CMS\resources\views\admin\index.blade.php)

请注意,我没有包括 index.blade.php 的所有 html 代码,因为它太长了,唯一的刀片代码来自我粘贴的内容。

Index.blade 视图:

 <ul class="nav nav-second-level">
                            <li>
                                <a href="route('admin.users.edit')">All Userss</a>
                            </li>

                            <li>
                                <a href="route('admin.users.create')">Create User</a>
                            </li>

                        </ul>

路线列表:

URI:

- admin/users
- admin/users/create
- admin/users/store
- admin/users/update
- admin/users/id/edit

姓名:

1. admin.users.index
 2. admin.users.create
 3. admin.users.store
 4. admin.users.update
 5. admin.users.edit

行动:

 1. App\Http\Controllers\AdminUsersController@index 
 2. App\Http\Controllers\AdminUsersController@create 
 3. App\Http\Controllers\AdminUsersController@store 
 4. App\Http\Controllers\AdminUsersController@update 
 5. App\Http\Controllers\AdminUsersController@edit

管理员/用户

路线:

Route::get('admin/users/', [

    'uses' => 'AdminUsersController@index',
    'as' => 'admin.users.index'
]);


Route::get('admin/users/create', [

    'uses' => 'AdminUsersController@create',
    'as' => 'admin.users.create'
]);

Route::get('admin/users/id/edit', [

    'uses' => 'AdminUsersController@edit',
    'as' => 'admin.users.edit'
]);

控制器:

    public function edit($id)
    

        $user = User::findOrFail($id);

        $roles = Role::pluck('name', 'id')->all();

        return view('admin.users.edit', compact('user', 'roles'));
    


    public function update(Request $request, $id)
    
        //
    

编辑视图:

@extends('layouts.admin')

@section('content')

<h1>Edit Users</h1>

!! Form::open(['method' => 'PATCH', 'action' => ['AdminUsersController@update', $user->id], 'files' => true]) !!

@include('includes.form-error')

<div class="form-group">

    !! Form::label('name', 'Name:') !!
    !! Form::text('name', null, ['class' => 'form-control']) !!

</div>


<div class="form-group">

    !! Form::label('email', 'Email:') !!
    !! Form::email('email', null, ['class' => 'form-control']) !!

</div>


<div class="form-group">

<div class="form-group">

    !! Form::label('role_id', 'Role:') !!
    !! Form::select('role_id',$roles , null, ['class' => 'form-control']) !!

</div>

<div class="form-group">

    !! Form::label('status', 'Status:') !!
    !! Form::select('status', [1 => 'Active', 0 => 'Not Active'], 0, ['class' => 'form-control']) !!

</div>

    <div class="form-group">

    !! Form::label('photo_id', 'Photo:') !!
    !! Form::file('photo_id', null, ['class' => 'form-control']) !!

</div>


<div class="form-group">

    !! Form::label('password', 'Password:') !!
    !! Form::password('password', ['class' => 'form-control']) !!

</div>

<div class="form-group">

    !! Form::submit('Create User', ['class' => 'btn btn-primary']) !!

</div>


!! Form::close() !!


@endsection

【问题讨论】:

您是否尝试过从Route::get('admin/users/' 中删除反斜杠以使其像这样:Route::get('admin/users' 我这样做了,现在我收到以下错误消息:使用未定义的常量 id - 假定为“id”(查看:C:\xampp\htdocs\CMS\resources\views\admin\users\ index.blade.php) 确保显示所有路由文件并尝试执行php artisan route:clear,然后发布php artisan route:list的结果 编辑您的问题并在那里发布结果 @EimantasGabrielius 用路线列表更新了我的问题。 【参考方案1】:

这是您的错误。您错过了在路由中传递变量:

  <li>
      <a href="route('admin.users.edit')">All Users</a>
  </li>

而不是route('admin.users.edit') 使用:

route('admin.users.edit', $id)

这实际上是编辑路线。如果您想让所有用户使用:

route('admin.users.index')

【讨论】:

现在我得到未定义的变量:id(视图:C:\xampp\htdocs\CMS\resources\views\admin\index.blade.php) 因为您没有$id 变量。只需将其替换为route('admin.users.index')$id 将在您要编辑选定的用户时使用。 行得通。但是使用 /admin/users 我得到这个错误:使用未定义的常量 id - 假定为 'id' (查看:C:\xampp\htdocs\CMS\resources\views\admin\users\index.blade.php) /admin/users 中不应有任何$id。你把$id放在某个地方,删除它【参考方案2】:

您正在使用:

<a href="route('admin.users.edit')">All Userss</a>

在你的 Blade 文件中,但是你的路由是这样定义的:

Route::get('admin/users/id/edit', [

    'uses' => 'AdminUsersController@edit',
    'as' => 'admin.users.edit'
]);

所以这是编辑操作,您需要传递您要编辑的用户的 ID,例如:

<a href="route('admin.users.edit', [auth()->user()->id])">All Userss</a>

【讨论】:

如果您的路线中有多个参数,eg. /class_id/episode_id 这个答案就是其中一个,因为该数组表示法。【参考方案3】:

route('admin.users.edit')改成route('admin.users.edit', $id),别忘了把$id改成真实的id变量:)

这很奇怪,因为你写了All users 并给出了编辑路线:)

【讨论】:

现在我得到:未定义的变量:id(视图:C:\xampp\htdocs\CMS\resources\views\admin\index.blade.php)

以上是关于Laravel中缺少路由所需的参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

缺少路由所需的参数(Laravel 8)

Laravel - 缺少[路线:编辑] [URI:cruds / {agency} / {id} / edit]所需的参数

Laravel 缺少 [Route: destroy] 所需的参数。

缺少必需的参数(laravel 8.8.0)

SocketIO(app)缺少所需的位置参数“模式”[关闭]

错误缺少 [Route: city] [URI: daftar/city/id] 所需的参数