Laravel 5.2路径模型使用方法和控制器进行绑定

时间:2016-09-19 07:28:18

标签: laravel laravel-5 laravel-5.2 laravel-routing

我已按以下方式配置路线:

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 TermController@review;
});

1 个答案:

答案 0 :(得分:1)

您为Route::bind URI段定义了与terms绑定的路由模块,因此无需在其他路由中再次指定。{p}至于附加路线,最好在Route::resource之前定义(见supplementing a resource controller)。

您可以像这样写出路线

// Additional resource routes should be called before Resource::resource
Route::get('terms/{terms}/review', 'TermController@showReview');

// 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.
}