2016-09-19 277 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. 
}