laravel - 静态控制器多路由/单控制器
问题描述
我试图找到一个可以完成这项工作的答案,但我发现的答案对我来说并不合适,我的网站有一个静态部分,我可以正常安排路线,如下面的代码所示。
重复相同的路线超过 7 页似乎很混乱,必须有更聪明的方法来做,我需要一些意见,也许是带有 slug 或其他东西的控制器,但我不太明白该怎么做它带有这样的站点的静态部分。
谢谢。
Route::get('/first/home', function()
{
return View::make('/first.home');
});
Route::get('/first/aboutus', function()
{
return View::make('/first.aboutus');
});
Route::get('/first/contact', function()
{
return View::make('/first.contact');
});
解决方案
我有一种感觉,你来自 WP,或者我错了。无论如何,Laravel 有一个差异。在提供静态页面方面的球赛。
现在,在您澄清之后,我建议您将路线分组,如下所示:
Route::group(['prefix' => 'first'], function () {
Route::get('(.*)', 'HomeController@getPageByName');
});
在HomeController
你可以编写如下函数:
function getPageByName(Request $request)
{
$pageName = $request->path();
//since your url does not begin with the page but with 'first',
//best is to turn this into an array.
$parsedPath = explode("/",$pageName)
$data = 'any data you want to pass';
if(View::exists($pageName[1] ){
return view($pageName[1] , compact($data));
} else {
abort(404)
}
}
如果您想要第一页,基本上您的网址将如下所示:
http://example.com/first/home
现在 Laravel 会寻找views/home.blade
让我知道这是否对您的问题有帮助。
推荐阅读
- html - 在运行时从 Typescript 有条件地在 HTML 页面上呈现消息 [Angular]
- python - 为什么我们需要在任何编程语言中创建一个套接字?
- javascript - 为什么值 0 没有被解析,而其他数字却被解析?
- c# - iOS c# adding JSON data to a tableView
- c - Makefile: *** missing separator. Stop
- algorithm - Find the maximum weight edge in a graph G?
- reactjs - useEffect 如何比较以前和更新的道具
- node.js - How to stub an instance of an object not declared in file
- go - Solution for Go exercise from "The Go Programming Language" book
- security - Why does Kerberos 5 use initial vector of 0?