如何使用 slug 中的变量动态处理 Laravel 路由



我想要一个基于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)}}
希望我的代码有帮助

最新更新