2014-02-15 5 views
3

Я пытаюсь создать проект REST, но у меня проблема. У меня есть ресурс schedule. Поэтому нормальная нотация /schedules/{id} не очень подходит, так как я хотел бы иметь /schedules/{day}/{month}/{year}, а затем применить REST и иметь /edit и т. Д.Laravel 4 Route :: resource with multiple parameters

Есть ли способ сделать это с помощью Route::resource()? или мне нужно сделать их через Route::get()?

ответ

4

Насколько я знаю, маршрут :: ресурс дает только маршруты, которые подробно описаны в documentation, поэтому для вас вам нужно будет объявить свой маршрут. Он по-прежнему остается спокойным, и если это только один из находчивых маршрутов, которые вы хотите изменить, вы все равно сможете сделать следующее, потому что маршруты приоритетны в том порядке, в котором они объявлены.

Route::get('schedule/{day}/{month}/{year}/edit', array('as' => 'editSchedule', 'uses' => '[email protected]')); 
Route::resource('schedule', 'ScheduleController'); 
+0

Спасибо. Поэтому, если бы я расширил это для всех остальных действий, мне нужно определить каждый из них с помощью кода выше справа? – Kousha

+0

Да, но перейдите к любому глаголу, который вы хотите использовать для действия – Ir1sh

+0

Хорошо, что имеет смысл. Спасибо – Kousha

1

Да, есть очень простой способ. Вот пример:

Укажите маршрут, как это:

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

Запрос будет выглядеть следующим образом:

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

И теперь вы можете получить все три параметра в шоу метода вашей contoller:

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

это не работает в '5.1'. Не могли бы вы предоставить источник для своего ответа? –

+0

Это решение работает только с литеральными строками, а не с привязкой к модели маршрута. –

1

Привет, это может быть удобно, если вы хотите позвонить в ur по имени. Также вы можете использовать один или несколько параметров. Он работает со мной на 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]); 

Это работает с Маршрута: Aswell ресурсов.

, например:

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

будет создавать именованные маршруты, такие как: {foo}.{bar}.dashboard.show

Для вызова этого метода с маршрута, вы установите его как следует.

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

Который создаст URL yourdomain.com/1/2/dashboard

Ill надеюсь, что это полезно.

Pascal

Смежные вопросы