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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.2路径模型使用方法和控制器进行绑定相关的知识,希望对你有一定的参考价值。

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

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

这导致自动使用默认方法可用的术语模型:编辑,显示等...

请参阅下面的控制器代码片段:

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

但是我想用几种新方法扩展我的控制器。所以当我导航到terms/{term}/review时,$term会自动注入我的控制器。有没有办法做到这一点?有些像下面?

Route::get('terms/{term}/review', function (AppTerm $term) {
   use TermController@review;
});
答案

您为Route::bind URI段定义了与terms绑定的路由模块,因此无需在附加路由中再次指定该模块。至于附加路线,最好在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 AppTerm::whereId($value)->first();
});

然后将其他方法添加到资源控制器:

public function showReview(AppTerm $term)
{
    dd($term); // $term is an instance of your AppTerm.
}

以上是关于Laravel 5.2路径模型使用方法和控制器进行绑定的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[23000]:违反完整性约束:在 Laravel 5.2 中

在 laravel 5.2 中使用单个命令制作模型和迁移

使用Laravel 5.2计算Y-m-d中存储在数据库中的日期的年龄

如何从 laravel 5.2 中的网站提取 API? [关闭]

Laravel 5.2 分页

未找到 Laravel 5.2 自定义包路径