Laravel:“获取”路由未调用控制器中的方法

问题描述 投票:0回答:1

我的路线是:

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 个参数,而另一个接受两个。

其余一切都一样。至少该方法正在另一个中被调用。

问题可能出在哪里?

php laravel laravel-blade laravel-controller
1个回答
-1
投票

Laravel 路由将匹配它找到的第一条路由,因为它使用正则表达式工作。

/edit/detail/{modelName}/{rowId}
/edit/detail/{modelName}/{rowId}/{persId}

都将匹配相同的路线(

/edit/detail/{modelName}/{rowId}
)

尝试将路由更改为

/edit/detail-row-person/{modelName}/{rowId}/{persId}
,这样它就不会与正则表达式匹配的其他现有路由冲突。

© www.soinside.com 2019 - 2024. All rights reserved.