Php 在Laravel 5.4中动态设置路线

Php 在Laravel 5.4中动态设置路线,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我是全新的拉威尔,我正在用不同的方式修补它,以了解它是如何工作的 我尝试的第一件事是动态创建路由,方法是创建一个routes配置文件,该文件本质上是一个视图数组,并通过循环创建路由。看起来是这样的: //在路由中循环 foreach(配置(“routes.web”)为$route){ $GLOBALS[“tmp_路线”]=$route; //设置回家的路径 $path=($route==“home”?“/”:$route); 路由::get($path,function()){ 返回视图($G

我是全新的拉威尔,我正在用不同的方式修补它,以了解它是如何工作的

我尝试的第一件事是动态创建路由,方法是创建一个routes配置文件,该文件本质上是一个视图数组,并通过循环创建路由。看起来是这样的:

//在路由中循环
foreach(配置(“routes.web”)为$route){
$GLOBALS[“tmp_路线”]=$route;
//设置回家的路径
$path=($route==“home”?“/”:$route);
路由::get($path,function()){
返回视图($GLOBALS[“tmp_路线]);
});
//弗雷奇

}
我们通常不在路由中使用循环。事实上,如果我没记错的话,我从来没有在路线中使用过循环。我的建议是使用paramater创建一个路由,并将其分配给控制器方法。e、 g:

// Note that if you want a route like this, just with one parameter,
// put it to end of your other routes, otherwise it can catch other
// single hard-coded routes like Route::get('contact')
Route::get('{slug}')->uses('PageController@show')->name('pages.show');
然后在你的页面控制器中

public function show($slug) {

    $view = $slug == '/'?'home':$slug;
    return view($view);        

}
使用此选项,将呈现视图/my-page.blade.php视图。正如你所看到的,我也给了他一个名字,pages.show。您可以使用route helper创建与此helper的链接。e、 g

echo route('pages.show','about-us'); // http://example.com/about-us
echo route('pages.show','contact'); // http://example.com/contact
在刀片模板中:

<a href="{{ route('pages.show','about-us') }}">About Us</a>


请查看文档了解更多和其他很酷的东西

为什么要这样做<代码>$GLOBALS在Laravel安装中让我无法控制地抽搐-这是一种糟糕的、糟糕的代码气味,完全没有必要。为了好奇,我最想了解的是如何运行Route::进入循环。我愿意接受建议。大约两个小时前我开始与拉威尔合作。我从未见过需要环路来构建路线的问题。您只需将这些路由正确地放在路由文件中,而不是在配置中设置路由数组。对于完全动态的任意路由,下面的答案是一个很好的答案,但在大多数情况下,您将使用类似
file/1
foo/bar
的路由。