2016-11-22 4 views
0

Я новичок в laravel и создаю приложение для обслуживания запасных частей. Я создал ресурс маршрута запасных частей с помощью:Laravel: Создание ресурса маршрута для подкаталога

Route::resource('/parts' , 'SparePartsController'); 

Это прекрасно работает. Позже я также хотел создать еще один ресурс маршрута для категорий запасных частей. Поэтому я создал контроллер и использовал:

Route::resource('/parts/categories' , 'SpCategoriesController'); 

Но этот второй ресурс не будет работать. Когда я перехожу на сайт www.myapp.com/parts/categories, я получаю пустую страницу. Любая идея, что не так?

+0

Попробуйте использовать: Route :: контроллер ('/ части/категории', 'SpCategoriesController'); И у вас есть функция getIndex() на вашем контроллере? –

ответ

0

Попробуйте сгруппировать маршруты с префиксом, например:

Route::group(['prefix' => 'parts'], function(){ 

    Route::get('/', 'SparePartsController'); 
    Route::get('/categories', 'SpCategoriesController'); 
}); 

Это будет перенаправлять весь трафик от/части к SparePartsController и/частей/категории будут называть SpCategoriesController

Посмотрите на документацию для получения дополнительной информации: https://laravel.com/docs/5.3/routing#route-groups

Если вы хотите, чтобы вызвать определенную функцию контроллера просто написать:

Route :: получить ('/', 'SparePartsController @ FunctionName')

0

Маршрут ресурс SpCategoriesController не будет работать, потому что маршрут SparePartsController ресурс принимает приоритет над ним.

Чтобы исправить это, поместите ваши маршруты в следующем порядке:

Route::resource('/parts/categories' , 'SpCategoriesController'); 
Route::resource('/parts' , 'SparePartsController') 

Ref: https://laravel.com/docs/5.3/controllers#restful-supplementing-resource-controllers

+1

Спасибо за помощь. Это сработало. –

+0

@BitOne Отлично! Отметьте ответ как правильный, если он помог :-) –

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