我的路线是:
Route::get('/edit/detail/{modelName}/{rowId}/{persId}',[AddPersInfoController::class,'editPersDetailTabs'])->name('edit_pers_detail');
我从表格中的按钮调用它:
<td><a href="{{ route('edit_pers_detail',['Posting_history', $posting->id, $posting->pers_info_id] ) }}"> </a></td>`\
在我的
AddPersInfoController
类中,我有一个函数:
public function editPersDetailTabs($modelName, $rowId, $persId){
dd('Controller method executed');
// Fetching record for editable components
$model_name = 'App\Models\\' . $modelName;
$detail = $model_name::where('id', $rowId)->first();
dd($detail);
return view('Pages.Persdata.add_all', compact('detail', 'postingHist',));
}
方法
editPersDetailTabs
没有被调用,因为所有 dd()
语句都没有显示任何内容。
我有另一种与此语法相同的路线和方法;唯一的区别是这个接受 3 个参数,而另一个接受两个。
其余一切都一样。至少该方法正在另一个中被调用。
问题可能出在哪里?
Laravel 路由将匹配它找到的第一条路由,因为它使用正则表达式工作。
/edit/detail/{modelName}/{rowId}
和
/edit/detail/{modelName}/{rowId}/{persId}
都将匹配相同的路线(
/edit/detail/{modelName}/{rowId}
)
尝试将路由更改为
/edit/detail-row-person/{modelName}/{rowId}/{persId}
,这样它就不会与正则表达式匹配的其他现有路由冲突。