Laravel 9路由已存在,点击线索名称访问show_lead返回404问题
问题排查与修复方案
点击客户线索名称返回404错误,主要由以下几个问题导致,逐一修复即可:
1. 控制器方法未接收路由参数
show_lead方法未声明接收路由传递的$id参数,同时模型名未遵循Laravel首字母大写的命名规范,导致无法正确查询数据,最终触发404。
修复后的控制器代码:
public function show_lead($id) { $lead = Lead::find($id); // 可选:查询不到数据时主动返回明确的404提示 if (!$lead) { abort(404, '该线索不存在'); } return view('admin.leads.show_lead', compact('lead')); }
2. Blade循环变量名冲突
模板中@foreach($lead as $lead)的变量名重复,循环内部的$lead会覆盖外部的集合变量,导致生成错误的跳转URL。
修复后的Blade代码:
@foreach($leads as $lead) <tr> <td> <a href="{{ url('show_lead', $lead->id) }}">{{ $lead->first_name }} {{ $lead->last_name }}</a> </td> <td>{{ $lead->company }}</td> <td>{{ $lead->email }}</td> <td>{{ $lead->phone }}</td> <td>{{ $lead->lead_source }}</td> <td>{{ $lead->lead_status }}</td> <td> <a class="btn btn-success fa fa-edit" href="{{ url('edit_lead', $lead->id) }}"></a> <a class="btn btn-danger fas fa-trash-alt" onclick="return confirm('Sure You Want To Delete This Lead')" href="{{ url('/delete_lead', $lead->id) }}"></a> </td> </tr> @endforeach
将循环的集合变量改为
$leads,避免与单个线索实例变量冲突。
3. 路由路径一致性检查
执行php artisan route:list命令查看实际路由列表,确认show_lead/{id}的完整路径。如果路由存在前缀(比如admin/),则需要修改Blade中的URL生成代码,例如url('admin/show_lead', $lead->id),确保跳转路径与路由规则完全匹配。
内容的提问来源于stack exchange,提问作者Komal Gautam
相关产品推荐
相关产品推荐

