Route :: bind在不存在的资源上抛出NotFoundHttpException

时间:2017-02-05 18:04:48

标签: php laravel laravel-5.3

当资源不存在时,此Route :: bind()抛出NotFoundHttpException,

Route::bind('layout', function($value, $route) {
    return App\Layout::where('id', $value)->first();
});

布局资源的完整路由如下,

Route::model('layout', 'Layout');

Route::bind('layout', function($value, $route) {
    return App\Layout::where('id', $value)->first();
});

Route::resource('layout', 'LayoutController');

我有几个资源具有完全相同的路由配置,当资源不存在时不会抛出此异常。为什么只有一个与其他路由配置相同的路由配置会发生这种情况?我为所有这些其他资源处理控制器中不存在的资源。

这是完整的错误,

NotFoundHttpException in Handler.php line 113:
No query results for model [App\Layout].

1 个答案:

答案 0 :(得分:0)

  1. 尝试Route::model('layout', App\Layout::class);
  2. 您不需要同时使用Route::modelRoute::bind,选择最适合您需求的那个,我认为Route::model适合您的情况
  3. RouteServiceProvider课程中注册路线模型和/或路线绑定,而不是routes.php档案