📜  Illuminate\Routing\Exceptions\UrlGenerationExceptionMissing [Route: destroy] [URI: users {id}] [Missing parameter: id] 的必需参数. (查看:C:\xampp\htdocs\project\resources\views\new1.blade.php) (1)

📅  最后修改于: 2023-12-03 15:01:22.908000             🧑  作者: Mango

介绍 UrlGenerationExceptionMissing 异常

UrlGenerationExceptionMissing 是 Laravel 框架中的一个异常类,当我们通过路由生成 URL 时,如果参数不够,就会抛出这个异常。该异常常见于路由 URL 中缺少必需的参数。

比如,在你的代码中执行了如下操作:

$url = route('destroy', ['id' => 1]);

然后你发现,控制台抛出了如下异常:

Illuminate\Routing\Exceptions\UrlGenerationException: Missing [id] parameter for route [destroy]. (View: C:\xampp\htdocs\project\resources\views\new1.blade.php)

这说明你的路由 URL 中必须包括 id 参数,但是在当前的路由调用中缺少了该参数。

解决办法

如果你遇到了 UrlGenerationExceptionMissing 异常,以下几点需要检查:

  1. 路由的定义是否正确,是否包含必需的参数。

    Route::delete('/users/{id}', 'UserController@destroy')->name('destroy');
    
  2. 路由的生成方式是否正确,是否传递了必需的参数。

    $url = route('destroy', ['id' => 1]);
    
  3. 视图文件中的路由调用方式是否正确。

    <form action="{{ route('destroy', ['id' => $user->id]) }}" method="POST">
        @method('DELETE')
        @csrf
        <button type="submit">删除用户</button>
    </form>
    

如果你已经检查了以上三点,还没有找到问题所在,可以考虑在代码中添加调试信息,查看变量值等信息帮助你筛选问题。

总结

UrlGenerationExceptionMissing 异常在使用 Laravel 框架时经常出现,它提示我们路由 URL 中缺少必需的参数。如果有类似的错误,需要检查路由的定义和生成方式,以及视图文件中的调用方式。当出现问题时,我们应该添加调试信息来帮助我们筛选问题和解决问题。