gpt4 book ai didi

laravel - 如果未找到模型,则转到下一条匹配路线

转载 作者:行者123 更新时间:2023-12-04 12:51:34 28 4
gpt4 key购买 nike

假设我们有 2 条这样的路线:

Route::get('{categoryitem}', ['as' => 'category_index', 'uses' => 'CategoryDisplayController@index']);

Route::get('{entryitem}', ['as' => 'entry', 'uses' => 'EntryController@show']);

参数没有参数约束,定义了以下 2 个路由模型绑定(bind):
Route::bind('categoryitem', function($slug)
{
return Category::whereSlug($slug)->root()->firstOrFail();
});
Route::bind('entryitem', function($slug)
{
return Entry::whereSlug($slug)->firstOrFail();
});

现在让我们假设我们运行的 URL 是 http://project/something .是否可以让 Laravel 在路由中首先查看 categoryitemsomething slug,如果没有找到模型,它会在第二条路径中查找带有 slug 的条目 something ?除了向路由添加一些前缀/后缀之外,我还没有找到解决方案

最佳答案

目前无法在条件下“跳过”路线。虽然有request on github如果由框架实现,这将允许跳过条件......

与此同时,您必须编写一条路线来捕获所有这些路线。并确定该项目是否存在于该路线(或 Controller ,如果您愿意)的内部。

Route::get('{slug}', function($slug){
// check if categoryitem exists
// else check if entryitem exists, etc...
});

显然,如果这变得有点多,则将代码移到 Controller 中

关于laravel - 如果未找到模型,则转到下一条匹配路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26572774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com