我是 Laravel 和网络编程的新手。我在教程中看到讲师,他通过id
使用控制器参数 将一个传递给控制器,与从控制器传递一个通过参数
Route::get('/post/{id}', ['as'=>'home.post', 'uses'=>'AdminPostsController@post']);
相比有什么区别?你能告诉我什么时候使用控制器参数和请求吗?id
$request
问问题
4842 次
2 回答
1
解释它的一种方法是参考您所指的 HTTP 动词 GET。
对于返回 id 为 1 的帖子的 GET 请求,您将有两个选项:
/post/{id}
使用此方法(一种宁静的约定),您需要将变量作为参数传递给控制器操作以访问它。
public function view($id)
{
$post = Post::find($id);
...
}
/post?id=1
使用此方法,您将 id 作为 url 内的查询字符串参数传递。然后在控制器内部,您可以访问请求中的值。
public function view(Request $request)
{
$post = Post::find($request->input('id'));
...
}
现在假设您要创建一个新Post
的,通常是对/post
端点的 HTTP 动词 POST 请求,您可以在该端点使用Request
.
public function create(Request $request)
{
$post = Post::create($request->only('description'));
}
现在假设您想要Post
将通常是 HTTP 动词 PUT 请求的电流更新到/post/{id}
端点,您将在该端点通过参数获取模型,然后使用请求更新数据。
public funciton update(Request $request, $id)
{
$post = Post::find($id);
$post->update($request->only('description'));
}
因此,有时您也会将控制器参数与请求结合使用。但通常控制器参数用于您需要访问的路由中的单个项目。
于 2017-10-30T06:41:44.497 回答
0
假设你是 Web 开发的新手,尤其是 Laravel,我建议你阅读 Laravel文档。posts/{id}
检索与该 ID 对应的后模型值。
Route::get('/post/1', 'AdminPostsController@post']); -> returns post that has an ID 1.
当像这样向您发送请求posts/1
时,它将注入您的模型并返回相应的 id 值
或者您可以通过具有相应 id 的控制器手动处理。
public function posts(Request $request)
{
returns Posts::find($request->id);
}
于 2017-10-30T06:27:10.770 回答