【发布时间】:2017-10-07 16:11:12
【问题描述】:
假设我有这些路线:
$api->group(['prefix' => 'Course'], function ($api) {
$api->group(['prefix' => '/{course}'], function ($api) {
$api->post('/', ['uses' => 'CourseController@course_details']);
$api->post('Register', ['uses' => 'CourseController@course_register']);
$api->post('Lessons', ['uses' => 'CourseController@course_lessons']);
});
});
如您所见,所有 / 、 Register 和 Lessons 路由都以 course 必需参数为前缀。
course 参数是我想用于路由模型绑定的Course 模型的 ID。
但另一方面,当我想在course_details 函数中使用course 参数时,它会返回null。像这样:
public function course_details (\App\Course $course)
{
dd($course);
}
但如果我在下面使用,一切正常:
public function course_details ($course)
{
$course = Course::findOrFail($course);
return $course;
}
似乎无法正确绑定模型。
什么是问题?
更新:
事实上,我正在使用dingo-api laravel 包来创建 API。所有基于其配置定义的路由。
但是有一个关于路由模型绑定的问题,在哪里支持路由模型绑定,我们必须在每个需要模型绑定的路由中添加一个名为binding 的中间件。 HERE 是这样描述的。
存在的一个更大的问题是,当我想将binding 中间件添加到路由组时,它不起作用,我必须将它添加到每个路由中。
在这种情况下,我不知道如何解决问题。
解决方案:
经过多次谷歌搜索,我发现:
我发现必须将 bindings 中间件添加到添加了 auth.api 中间件的同一路由组中,而不是将其分别添加到每个子路由中。
意思是这样的:
$api->group(['middleware' => 'api.auth|bindings'], function ($api) {
});
【问题讨论】:
标签: php laravel laravel-5.4