资源路径中的显式模型绑定?

时间:2016-01-11 08:29:39

标签: php rest laravel routing laravel-5.1

考虑Route::resource('foo/bar', 'MyController');。 Laravel将为所有REST路由寻找名为Bar的模型(例如,foo/bar/2它会查找Foo模型id=2)。但是,我需要将该资源映射到另一个模型(e..g Baz模型)。怎么做?

1 个答案:

答案 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
    }
});

不是最干净的解决方案,但你明白了。别忘了导入相关的命名空间。