考虑Route::resource('foo/bar', 'MyController');
。 Laravel将为所有REST路由寻找名为Bar
的模型(例如,foo/bar/2
它会查找Foo
模型id=2
)。但是,我需要将该资源映射到另一个模型(e..g Baz
模型)。怎么做?
答案 0 :(得分:0)
您可以使用bind
的{{1}}方法。在RouteServiceProvider
课程中,将其添加到boot
方法:
注意:我只是假设路由密钥名称为bar
,因为Laravel默认情况下可能会使用(根据您的路由定义)
如果不同的URI绑定不同的模型,您可以创建条件语句,如下所示:
$router->bind('bar', function($value) {
// Following REST
// @index
if (Request::isMethod('get') && Request::is('foo/bar')) {
return Bar::where('id', $value)->first();
// @edit
} elseif (Request::isMethod('get') && Request::is('foo/bar/*/edit')) {
// return other model
// @show
} elseif (Request::isMethod('get') && Request::is('foo/bar/*')) {
// return other model
// @update
} elseif (Request::isMethod('put') && Request::is('foo/bar/*')) {
// return other model
}
});
不是最干净的解决方案,但你明白了。别忘了导入相关的命名空间。