Reputation: 151
I am looking to create a URL structure like site.com/mycat/myorg/myexam/mysyllabus and site.com/mycat/myorg/myexam and so on for all params.
Currently I'm passing the params from URL to the function like:
Route::get('{cat}/{org}/{exam}/{syllabus}', 'homeController@myPage');
and my function looks like this:
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);
}
I think it would be very resource intensive to check for all url params at every request from the database. Currently i'm only checking the $syllabus param from database but this way any value of $org, $cat can be passed without any error. Ofcourse I can check for all params from database but i think that's not the right way to work with URLs with this awesome framework.
Update: I also want to make cat and org optional.
Upvotes: 0
Views: 705
Reputation: 1690
Do you only have a set amount of categories, organizations, etc? If so, Laravel comes with something called Route Prefixing, where you can do something like this for each of the categories and organizations:
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');
});
});
});
Upvotes: 1