0

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

4

2 回答 2

1

解释它的一种方法是参考您所指的 HTTP 动词 GET。

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

  1. /post/{id}

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

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'));
}

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

于 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 回答