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计算Y-m-d中存储在数据库中的日期的年龄