Laravel高级路由系统

时间:2016-05-10 17:09:16

标签: php laravel laravel-5.2 laravel-routing

我试图用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()

所以我想我做错了什么......关于如何修复我的代码的任何建议?

提前感谢大家

0 个答案:

没有答案