在Laravel控制器中检索GET和POST数据


Retrieving GET and POST data inside Laravel controller

我一直在网上搜索如何在控制器内部获取 POST 数据,到目前为止,我找到了两种解决方案:Input::get()$_POST

Input::get()的评论如下:

/**
 * Gets a "parameter" value.
 *
 * This method is mainly useful for libraries that want to provide some flexibility.
 *
 * Order of precedence: GET, PATH, POST
 *
 * Avoid using this method in controllers:
 *
 *  * slow
 *  * prefer to get from a "named" source
 *
 * It is better to explicitly get request parameters from the appropriate
 * public property instead (query, attributes, request).
 *
 * @param string  $key     the key
 * @param mixed   $default the default value
 * @param Boolean $deep    is parameter deep in multidimensional array
 *
 * @return mixed
 */

他们所指的这个"命名"来源是什么?我应该用什么代替Input::get()

该文档显示您可以使用 Input::get() 检索任何 HTTP 谓词的输入值。

$name = Input::get('name');

要获取所有输入,请使用Input::all()方法。要检查特定列是否存在,请使用Input::has('column_name')例如。Input::has('name') .要检索列值,请使用Input::get('column_name')例如。 Input::get('name') .

您可以使用

以下命令从url获取参数:-

request()->urlParam;

如果你想使用 :- 获取 GET 参数

$request->get('current-password');

如果要使用 :- 获取 POST 参数

$request->post('current-password');

在现代Laravel安装中,如果您的控制器方法传递了Request的实例,那么您可以使用它。例如,所有这些都是相同的:

public function update(Request $request, Model $model) {
    $some_var = $_POST["some_var"];
    $some_var = $request->input("some_var");
    $some_var = $request->post("some_var");
    $some_var = $request->some_var;
}

如果未向方法传递当前Request的实例,则可以使用 request() 帮助程序方法访问一个实例。