Laravel动态路由器

Laravel动态路由器

问题描述:

我正在构建一个网页,其中的网页都是动态的,布局是相同的,但是具有不同的内容块。我想让它变得更友好,其中每个页面url都由任意数量的类别和页面名称组成。即home.com/cat1/sub-ca2/sub-cat3/page-name。Laravel动态路由器

路由器必须从url中获取slug,并返回一个视图和相应的产品数据来填充该视图。

我在网上搜索是徒劳的,试图找到如何使路由器的指令。任何人都可以阐明如何实现这一目标?

非常感谢Laravel机组人员,Laravel是最棒的!

如果所有您的网址符合home.com/cat1/sub-ca2/sub-cat3/page-name的相同的结构,这是非常简单的Laravel:

Route::get('{cat1}/{cat2}/{cat3}/{name}', function($cat1, $cat2, $cat3, $name) { 
     return view($cat1 . '.' . $cat2 . '.' . $cat3 . '.' . $name); 
}); 

如果不是所有页面都遵循URL中具有4个参数的结构,那么对于您的问题没有一个好的解决方案。为了进行路由,只要URL结构发生变化,就需要某种可预测性,以便知道哪个参数在什么位置。

作为Laravel路由文档中的描述还可以卸载这对一个控制器的方法https://laravel.com/docs/5.4/routing#route-parameters

路由器

Route::get(‘{cat1}/{cat2}/{cat3?}/{cat4?}’, ‘[email protected]’); 

控制器

public function index(Request $request, $cat1, $cat2, $cat3, $cat4) { 
    // logic here 
} 
+0

由于罗布,数量每个网页的类别会有所不同,其中一个可能是site.com/digital-sig nage /户外/户外数字标牌页面,还可能有site.com/digital-signage/digital-signage-page。 无论如何有一个动态数量的slu??该文档中的方法适用于有限数量的slu gs。 –

+0

你可以有一些是可选的,但你仍然必须知道什么位置意味着什么逻辑。你肯定会把这个传递给一个控制器,并且实现你需要的任何逻辑 –

+0

感谢rob,我怎么能把整个事情传递给控制器​​?我可以从那里弄清楚逻辑吗? 您可以将'/ *通配符* /转发给控制器吗? –