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)
所以,我希望我的出版物可以通过以下方式访问:
/research-group-slug/research-line-slug/publications
- 显示属于研究线和研究组的所有出版物
/research-line-slug/publications
- 显示属于该研究组的所有出版物
/publications
- 显示所有出版物
我正在研究路由前缀以执行此操作,但我不太明白如何将前缀设置为可选。
有什么建议吗?
提前谢谢你。
问候。
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
虽然我个人不喜欢这样做
如果能在 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)
所以,我希望我的出版物可以通过以下方式访问:
/research-group-slug/research-line-slug/publications
- 显示属于研究线和研究组的所有出版物
/research-line-slug/publications
- 显示属于该研究组的所有出版物
/publications
- 显示所有出版物
我正在研究路由前缀以执行此操作,但我不太明白如何将前缀设置为可选。
有什么建议吗?
提前谢谢你。 问候。
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
虽然我个人不喜欢这样做