Laravel8报Illuminate\Routing\Exceptions\UrlGenerationException错误如何解决
错误原因
触发Illuminate\Routing\Exceptions\UrlGenerationException异常的直接原因是:你的generate-pdf路由定义了必填的id参数,但是在generate_pdf视图模板中调用{{route('generate-pdf')}}生成路由时,没有传入该必填参数,Laravel无法生成对应URL就会抛出该异常。
除此之外你的代码还有两处隐藏问题:
- 控制器向视图传递数据的写法错误:
PDF::loadView('generate_pdf', $data)的第二个参数要求是关联数组,直接传入模型实例时,Laravel会将模型属性拆分为独立变量传入视图,比如你可以直接调用$name、$first_name,但你视图中使用的$data变量不存在,跑完路由异常后下一步就会触发变量未定义错误。 - 视图语法错误:
<p>{{ $data->first_name }}}</p>多写了一个右大括号,会触发模板语法错误。
修复方案
- 修正视图中的路由调用:如果不需要该生成PDF链接可以直接删除,需要保留的话补充传入id参数,修改为
{{route('generate-pdf', $data->id)}} - 修正控制器传参逻辑:将
$pdf = PDF::loadView('generate_pdf', $data)修改为$pdf = PDF::loadView('generate_pdf', ['data' => $data]),保证视图可以正常访问$data变量 - 修正视图语法错误:将
<p>{{ $data->first_name }}}</p>修改为<p>{{ $data->first_name }}</p>
内容的提问来源于stack exchange,提问作者john clyde dagpin
相关产品推荐
相关产品推荐

