我想要一个路由条目,该条目根据URL中的段动态处理请求。我尝试了下面的代码,但关闭似乎遇到了麻烦。我也用控制器操作替换了闭包,并尝试了其他选项,但均未成功。到目前为止,我想到的最好的方法是:
$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。
有想法吗?
答案 0 :(得分:4)
尝试通过$thisView
传递use
:
$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);
}
答案 1 :(得分:0)
您好,我正在做与您想要的非常相似的事情
if($b!=-1)
所以我正在做的是我有一个带有名称页的文件夹
我用诸如contact-us.blade.php之类的名字将视图写入该文件夹
当我转到路线“ pages / contact-us”时,它会在文件夹
中搜索该视图
如果存在,则返回视图,否则将重定向到主页
我的代码中唯一的区别是您必须调用这样的路由
Route::get('pages/{pageName}',function($pageName){
if(view()->exists('pages.'.$pageName)){
return view('pages.'.$pageName);
} else {
return redirect('/');
}
});
我希望我的代码有帮助