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

标签 laravel laravel-4 laravel-routing

假设我们有 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/

相关文章:

php - 如何查询数据库以将产品订单抓取到用户个人资料中

php - 在 Laravel 4 模型上使用 setConnection

collections - Laravel 合并集合信从 4.0 升级到 4.1 时出错

php - 在laravel 5中找不到类 Controller

php - 当我尝试使用 Laravel Controller 方法处理 AJAX 请求时,为什么会出现此异常?

global-variables - Laravel 8 中的全局变量

javascript - 使用带参数对象的 Axios Post 没有返回数据

laravel - 如何使用 Vue 和 Laravel 访问另一个 docker 卷文件?

php - 在 laravel 5.7 中使用 ajax 技术

php - 在 Laravel 中从数据库中获取不同的属性