Laravel 中的路由模型绑定和父子验证

Ben*_*Ben 4 php routes model-binding laravel

假设我有一条类似的路线:

Route::get('users/{user}/posts/{post}', 'PostController@show')

App\User我已经为to{user}App\Postto设置了路由模型绑定{post}。我已经看到我能够调用任何给定用户的任何现有帖子来获取屏幕上的内容。是否有一个通用的地方可以将约束分配给绑定模型?

Meh*_*hdi 6

您可以使用Route::bind并设置函数的第二个变量来访问当前路由及其参数,如下所示:

class RouteServiceProvider extends ServiceProvider{
    public function boot(Router $router)
    {
        $router->bind('user', function($value) {
            return App\User::findOrFail($value);
        });

        $router->bind('post', function($value, $route) {
            return $route->parameter('user')->posts()->findOrFail($value);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)