假设我有以下途径:路线模型绑定在laravel的航线组不起作用
$api->group(['prefix' => 'Course'], function ($api) {
$api->group(['prefix' => '/{course}'], function ($api) {
$api->post('/', ['uses' => '[email protected]_details']);
$api->post('Register', ['uses' => '[email protected]_register']);
$api->post('Lessons', ['uses' => '[email protected]_lessons']);
});
});
正如你可以看到一个course
所需的参数为前缀的/
,Register
和Lessons
路线。
course
参数是我想用于路由模型绑定的Course
模型的ID。
但另一方面,当我想要使用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
中间件添加到路由组时,它不起作用,我必须将其添加到每个路由。
在这种情况下,我不知道如何解决问题。
解决方案:
许多谷歌搜索后,我发现:
我发现必须向加auth.api
中间件而不是将其分别添加到每个子路线原路组中添加bindings
中间件。
意味着这样的:
$api->group(['middleware' => 'api.auth|bindings'], function ($api) {
});
为什么我添加一个'$ _course'参数? laravel docs说这足够了** _ type-hinted变量名称匹配路径段名称Laravel将自动注入具有与来自请求URI _ **的相应值相匹配的ID的模型实例。我不明白什么是$ _course,必须添加它。 –