Laravel 4 Route ::具有多个参数的资源

时间:2014-02-15 02:01:40

标签: rest laravel-4 laravel-routing

我正在尝试使用REST设计,但我遇到了一些问题。我有一个资源schedule。因此,/schedules/{id}的正常表示法不太适用,因为我希望/schedules/{day}/{month}/{year}然后应用REST,并使用/edit等。

有没有办法用Route::resource()执行此操作?或者我是否需要通过Route::get()来完成这些工作?

3 个答案:

答案 0 :(得分:4)

据我所知,route :: resource只为你提供了documentation中详细说明的路由,因此您需要声明自己的路由。它仍然是宁静的,如果它只是你想要改变的资源丰富的路线之一,你仍然应该能够做到以下几点,因为路线按照它们被宣布的顺序排列优先顺序。

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

答案 1 :(得分:2)

是的,有一种非常简单的方法。这是一个例子:

指定您的路线:

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

请求将是这样的:

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

现在你可以在你的show方法中获得所有三个参数     位指示:

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

答案 2 :(得分:1)

您好,如果您想通过名字呼叫您的路线,这可能会很方便。您也可以使用一个或多个参数。它在laravel 5.1上与我合作

根据laravel文档: http://laravel.com/docs/5.1/routing#named-routes

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

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

这适用于Route:resource以及。

例如:

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

将创建命名路线,如:{foo}.{bar}.dashboard.show

要使用路线方法调用此方法,请按照以下步骤进行设置。

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

将创建网址yourdomain.com/1/2/dashboard

我希望这是有用的。

帕斯卡