我试图用Laravel 5.2实现一个简单的CMS,它主要处理两种路由。第一个用于浏览网站视图,该视图必须是{view}.html
。控制器迭代数据库记录,如果找不到该页面,将返回404错误页面:
Route::get('/{page}', [
'as' => 'page',
'uses' => 'Website\WebsiteController@showPage'
])->where(['page' => '.+(\.html)']);
例如,这些路线将匹配:
www.mydomain.ext/homepage.html
www.mydomain.ext/about.html
www.mydomain.ext/news.html
www.mydomain.ext/contact.html
等等。第二个是管理控制面板的路由组:
Route::group([
'prefix' => env('ADMIN_PREFIX', 'admin'),
'as' => env('ADMIN_PREFIX', 'admin') . '::',
'middleware' => ['auth']
], function() {
/*
* ADMIN ROUTES
*/
});
因此,该组中的所有路线都将是:
www.mydomain.ext/admin/dashboard
www.mydomain.ext/admin/user/1
www.mydomain.ext/admin/page/2
等等。
从我发现的here:
Laravel从上到下匹配路线。因此,您需要做的就是投放广告系列/添加'在通配路线上方。
这就是我所做的:
routes.php文件
Route::group([
'prefix' => Localization::setLocale(),
'middleware' => ['localeSessionRedirect', 'localizationRedirect']
// LaravelLocalization (https://github.com/mcamara/laravel-localization)
], function() {
Route::auth();
// admin routes
Route::group([
'prefix' => env('ADMIN_PREFIX', 'admin'),
'as' => env('ADMIN_PREFIX', 'admin') . '::',
'middleware' => ['auth']
], function() {
/*
* ADMIN ROUTES
*/
});
Route::get('/{page}', [
'as' => 'page',
'uses' => 'Website\WebsiteController@showPage'
])->where(['page' => '.+(\.html)']);
});
但是当我尝试调用管理路由时,Laravel会抛出此错误:
Missing argument 1 for App\Http\Controllers\Website\Core\WebsiteCoreController::showPage()
所以我想我做错了什么......关于如何修复我的代码的任何建议?
提前感谢大家