如何在Slug中使用变量动态处理Laravel路由

时间:2018-09-11 16:25:47

标签: laravel laravel-5 laravel-blade

我想要一个路由条目,该条目根据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。

有想法吗?

2 个答案:

答案 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('/'); } });
我希望我的代码有帮助