2016-09-19 278 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::bindterms 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. 
}