我一直在网上搜索如何在控制器内部获取 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()
帮助程序方法访问一个实例。