Question

I am trying to have a REST design, but I am running in a bit of a problem. I have a resource schedule. Therefore, the normal notation of /schedules/{id} is not very applicable since I would like to have /schedules/{day}/{month}/{year} and then apply REST, and have /edit and such.

Is there a way to do this with Route::resource() ? or do I need to do them through Route::get() ?

Was it helpful?

Solution

As far as I know route::resource only gives you the routes that are detailed in the documentation so for what you want you would need to declare your own route. It is still restful and if it is only one of the resourceful routes you want to change you should still be able to do the following because the routes are prioritized in the order they are declared.

Route::get('schedule/{day}/{month}/{year}/edit', array('as' => 'editSchedule', 'uses' => 'ScheduleController@edit'));
Route::resource('schedule', 'ScheduleController');

OTHER TIPS

Yes, there is a very simple way. Here is an example:

Specify your route like this:

Route::resource("schedules/day.month.year", "ScheduleController");

The request will be like this:

/schedules/day/1/month/12/year/2014

And now you can get all three parameters in show method of your contoller:

public function show($day, $month, $year)

Hi there this might be handy if you want to call your route by name. Also you can use one or multiple parameters. It works with me on laravel 5.1

According to the laravel docs: http://laravel.com/docs/5.1/routing#named-routes

Route::get('user/{id}/profile', ['as' => 'profile', function ($id) {
    //
}]);

$url = route('profile', ['id' => 1]);

This works with Route:resource aswell.

for example:

Route::resource('{foo}/{bar}/dashboard', 'YourController');

Will create named routes like: {foo}.{bar}.dashboard.show

To call this with the route method, you set it up as followed.

route('{foo}.{bar}.dashboard.show', ['foo' => 1, 'bar'=> 2])

Which will create the url yourdomain.com/1/2/dashboard

Ill hope this is usefull.

Pascal

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top