Laravel使用控制器参数与请求将数据传递给控制器



我是Laravel和Web编程的新手。我在教程中看到讲师,他使用控制器参数
Route::get('/post/{id}', ['as'=>'home.post', 'uses'=>'AdminPostsController@post']); id传递给控制器,与从控制器传递id参数$request有什么区别?
你能告诉我什么时候使用控制器参数和请求吗?

解释它的一种方法是引用你所指的HTTP动词GET。

对于返回 id 为 1 的帖子的 GET 请求,您将有两个选择:

  1. /post/{id}

使用此方法(一种 restful 约定),您需要将变量作为参数传递给控制器操作以访问它。

public function view($id)
{
$post = Post::find($id);
...
}
  1. /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'));
}

因此,有时您还将使用控制器参数与请求的组合。但通常,控制器参数适用于需要访问的路由内的单个项目。

假设你是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);
}

相关内容

  • 没有找到相关文章

最新更新