2016-09-19 2 views
0

Я настроил мой маршрут следующим образом:Laravel 5,2 маршрута Модель Связывание с использованием методов и контроллер

Route::model('terms', 'Term'); 
Route::resource('terms', 'TermController'); 
Route::bind('terms', function($value, $route) { 
    return App\Term::whereId($value)->first(); 
}); 

Это приводит в том, автоматически термин модель доступна с помощью методов по умолчанию: редактировать, шоу и т.д. ...

ниже фрагмент кода из моего контроллера:

public function update(Term $term) { 
//update term 
} 

Однако я хочу продлить мой контроллер с парой новых методов. Поэтому, когда я перехожу к terms/{term}/review, $term автоматически вводится в мой контроллер. Есть какой-либо способ сделать это? Некоторые вроде ниже? Любая помощь высоко ценится!

Route::get('terms/{term}/review', function (App\Term $term) { 
    use [email protected]; 
}); 

ответ

1

Вы определили модуль маршрута связывания с Route::bind для сегмента terms URI, так что нет необходимости указывать, что снова в дополнительном маршруте. Что касается дополнительного маршрута, его лучше всего определить до Route::resource (см. supplementing a resource controller).

Вы можете записать ваши маршруты так:

// Additional resource routes should be called before Resource::resource 
Route::get('terms/{terms}/review', '[email protected]'); 

// Init resource controller 
Route::resource('terms', 'TermController'); 

// URI binding resolution for 'terms' 
Route::bind('terms', function($value) { 
    return App\Term::whereId($value)->first(); 
}); 

А затем добавить дополнительный метод к вашему контроллер ресурсов:

public function showReview(\App\Term $term) 
{ 
    dd($term); // $term is an instance of your App\Term. 
} 
Смежные вопросы