Laravel 5 - 带有可选前缀的路由

Laravel 5 - Routing with optional prefixes

如果能在 Laravel 5 中提供路由方面的帮助,我将不胜感激。

我有三个模型:ReasearchLine、ReasearchGroup 和 Publications。 每个 ReasearchGroup 都属于一个 ReasearchLine。每个出版物都可以属于一个 ReasearchLine 和一个 ReasearchGroup。

我的数据库架构如下所示:

research_lines table: 编号

research_groups table: id,research_line_id(在 research_lines 上引用 id)

出版物 table: id,research_line_id(在 research_lines 上引用 id),research_group_id(在 research_groups 上引用 id)

所以,我希望我的出版物可以通过以下方式访问:

我正在研究路由前缀以执行此操作,但我不太明白如何将前缀设置为可选。

有什么建议吗?

提前谢谢你。 问候。

laravel 中的路由有多复杂,

Route::get('/', 'MyController@myFunction');

您使用花括号语法传递参数

Route::get('/segment/{id}' ...

你去嵌套

Route::get('/segment/{id}/segment/{id}' ...

对于可选参数

Route::get('/segment/{id}/segment/{name?}', function($name = null)

当涉及到可选内容时,您放置包含参数的路由的顺序是必要的。

根据我的经验,如果您尝试使用太多没有任何硬编码前缀的参数,或者以过度嵌套的方式使用可选参数,纸牌屋往往会倒塌。归根结底,路由是模式匹配。

我是个懒惰的人,所以我会用

解决它
Route::get('/publications',...
Route::get('/research-line/{slug}/publications',...
ect ect

如果你说你必须像你说的那样具体地拥有它,那么看起来这里已经回答了 - Laravel optional routing parameter

虽然我个人不喜欢这样做