2013-08-17 1 views
0

Я хотел бы изменить некоторые автоматически генерируемые маршруты Laravel, и я не уверен, действительно ли это возможно или нет.Изменение маршрутов контроллера ресурсов Laravel 4

У меня есть модель под названием Workspace (с использованием Eloquent), и я создал контроллер ресурсов, используя ремесленник.

php artisan controller:make WorkspaceController 

И я также добавил маршруты, используя эту команду в моем routes.php файле.

Route::resource('workspace', 'PROJECT\Controllers\Workspaces\WorkspaceController'); 

Поскольку я хочу использовать GetIndex список доступных ресурсов, я хотел бы маршрут указательного быть workspaces и не workspace, в то время как я хотел бы сохранить структуру для других сценариев, таких как workspace/{id}/edit и так далее.

Знаете ли вы, как я могу изменить маршруты по умолчанию, которые создает Route::resource?

+0

Это не так много изменяя, как работают контроллеры ресурсов, как возиться с маршрутами в целом. Вы действительно хотите, чтобы ресурсы «рабочие пространства» и «рабочая область» были одинаковыми ». Вы можете использовать ответ Shift Exchange для этого (для маршрутизации на один и тот же контроллер). В противном случае вы можете [расширить маршрутизатор] (https://github.com/laravel/framework/blob/master/src/Illuminate/Routing/Router.php) и заменить Laravel своей расширенной версией, если хотите. – fideloper

+0

Я думаю, настоящий вопрос: у вас есть хорошая деловая причина для этого? Все, что останавливает вас от маршрутизации '/ workspaces' до' WorkspaceController @ index'? – fideloper

+0

Спасибо, я решил, что лучше всего определить все маршруты, так как я гораздо лучше контролирую их. – Jonathan

ответ

1

Вы не можете «изменить» маршрут ресурса() как таковой.

Вы можете добавить больше маршрутов поверх ресурса() или просто определить каждый из маршрутов индивидуально и, следовательно, иметь полный контроль над своими маршрутами.

Read this blog about routes - it will shed some light on the issue

пример, чтобы добавить больше маршрутов вы могли бы сделать что-то вроде:

Route::get('extra', 'PROJECT\Controllers\Workspaces\WorkspaceController'); 
Route::resource('workspace', 'PROJECT\Controllers\Workspaces\WorkspaceController'); 

Примечание дополнительные маршруты лучше определены до ресурса() маршрута

+0

Хорошо, спасибо за ваш ответ. Жаль, что вы не можете определить отдельные маршруты и использовать ресурс(). – Jonathan