php - Laravel 8:如何使隐式模型绑定路由参数可选而不是抛出 404?
问题描述
我尝试将 Laravel 文档结合在隐式绑定和可选参数上,并具有以下代码。
路线文件:
Route::get('go/{example?}', [ExampleController::class, 'click'])->name('example');
在控制器中:
public function click(Example $example = null)
{
// Execution never reaches here
}
除非有一个带有正确 slug 的示例,否则执行永远不会到达控制器,因为它会引发 404。我想检查$example
控制器中是否为 null 并在那里使用自定义逻辑。如何实现?
解决方案
尝试这个
Route::get('go/{example?}', [ExampleController::class, 'click'])->name('example');
public function click($example)
{
if($example != null){
$example = Example::findOrfail($example);
}
}
在模型绑定中,它会自动运行findOrfail
到该模型,所以不要那样做,这样你就可以控制它然后你可以管理