如何在Laravel 4中制作多级网址结构?

时间:2014-03-28 10:46:02

标签: php laravel laravel-4

我希望为所有参数创建一个URL结构,例如site.com/mycat/myorg/myexam/mysyllabus和site.com/mycat/myorg/myexam等。

目前我正在将params从URL传递给函数,如:

Route::get('{cat}/{org}/{exam}/{syllabus}', 'homeController@myPage');

我的功能如下:

public function myPage($cat, $org, $exam, $syllabus) {
    $result = myModel::where('syllabus_slug', $syllabus)->first();
    if(empty($result)) { App::abort(404); } 
    else
    return View::make('myPage', $result);
}

我认为在数据库的每个请求中检查所有url参数是非常耗费资源的。目前我只是从数据库中检查$ syllabus参数,但这样可以传递$ org,$ cat的任何值而不会出现任何错误。当然,我可以检查数据库中的所有参数,但我认为这不是使用这个很棒的框架处理URL的正确方法。

更新:我还想让cat和org可选。

1 个答案:

答案 0 :(得分:1)

您是否只有一定数量的类别,组织等?如果是这样,Laravel会附带一个名为Route Prefixing的东西,你可以在这里为每个类别和组织做这样的事情:

Route::group(array('prefix' => 'myCategory'), function()
{

    Route::group(array('prefix' => 'myOrg'), function()
    {

        Route::group(array('prefix' => 'myExam'), function()
        {
            Route::get('/', 'homeController@myPage');

        });

        Route::group(array('prefix' => 'myOtherExam'), function()
        {
            Route::get('/', 'homeController@myOtherPage');

        });
    });
});