我想要一个基于URL中的slug动态处理请求的路由条目。我尝试了下面的代码,但关闭似乎妨碍了。我也用控制器操作替换了闭包,并尝试了其他选项但没有成功。到目前为止,我想出的最好的如下:
$bladeFiles = [
"about-us",
"join",
"contact",
];
foreach ($bladeFiles as $thisView) {
Route::get($thisView, function () {
global $thisView;
if (View::exists($thisView)) {
return view($thisView);
} else {
return redirect()->route('homepage');
}
})->name($thisView);
}
上述代码片段的问题在于global $thisView
在闭包中始终为 null。
思潮?
尝试使用use
传递$thisView
:
$bladeFiles = [
"about-us",
"join",
"contact",
];
foreach ($bladeFiles as $thisView) {
Route::get($thisView, function () use ($thisView) { // <-- here
if (View::exists($thisView)) {
return view($thisView);
} else {
return redirect()->route('homepage');
}
})->name($thisView);
}
你好,我正在做一些与你想要的非常相似的事情
Route::get('pages/{pageName}',function($pageName){
if(view()->exists('pages.'.$pageName)){
return view('pages.'.$pageName);
} else {
return redirect('/');
}
});
所以我正在做的是我有一个带有名称页面的文件夹,
我将视图写入该文件夹,其中包含 Contact-US.blade 等 slug 名称.php
当我转到路由"页面/联系我们"时,它会在文件夹中搜索该视图(
如果存在(,它会返回视图,否则只需重定向到主页
我代码中唯一的区别是您必须像这样调用路由{{url('pages/"$pageName"')}} instead of {{rout($pageName)}}
希望我的代码有帮助