首页 > 解决方案 > 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 并在那里使用自定义逻辑。如何实现?

标签: phplaravelrouteslaravel-8

解决方案


尝试这个

Route::get('go/{example?}', [ExampleController::class, 'click'])->name('example');
public function click($example)
{
    if($example != null){
        $example = Example::findOrfail($example);
    }

    
}

在模型绑定中,它会自动运行findOrfail到该模型,所以不要那样做,这样你就可以控制它然后你可以管理


推荐阅读