我正在尝试使用REST设计,但我遇到了一些问题。我有一个资源schedule
。因此,/schedules/{id}
的正常表示法不太适用,因为我希望/schedules/{day}/{month}/{year}
然后应用REST,并使用/edit
等。
有没有办法用Route::resource()
执行此操作?或者我是否需要通过Route::get()
来完成这些工作?
答案 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
我希望这是有用的。
帕斯卡