Skip to content

请求与输入

基本输入

您可以通过几个简单的方法访问所有用户输入。您无需担心请求使用的 HTTP 动词,因为输入在所有动词中以相同的方式访问。

检索输入值

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

如果输入值缺失则检索默认值

php
$name = Input::get('name', 'Sally');

确定输入值是否存在

php
if (Input::has('name'))
{
	//
}

获取请求的所有输入

php
$input = Input::all();

仅获取请求输入的一部分

php
$input = Input::only('username', 'password');

$input = Input::except('credit_card');

在处理带有“数组”输入的表单时,您可以使用点表示法访问数组:

php
$input = Input::get('products.0.name');
lightbulb

一些 JavaScript 库,如 Backbone,可能会将输入作为 JSON 发送到应用程序。您可以像正常一样通过 Input::get 访问这些数据。

Cookies

Laravel 框架创建的所有 cookies 都是加密的,并带有身份验证代码,这意味着如果客户端更改了它们,它们将被视为无效。

php
$value = Cookie::get('name');
php
$response = Response::make('Hello World');

$response->withCookie(Cookie::make('name', 'value', $minutes));

如果您希望在创建响应之前设置 cookie,请使用 Cookie::queue() 方法。该 cookie 将自动附加到应用程序的最终响应中。

php
Cookie::queue($name, $value, $minutes);
php
$cookie = Cookie::forever('name', 'value');

旧输入

您可能需要在一次请求中保留输入,直到下一次请求。例如,您可能需要在检查验证错误后重新填充表单。

将输入闪存到会话

php
Input::flash();

仅将某些输入闪存到会话

php
Input::flashOnly('username', 'email');

Input::flashExcept('password');

由于您通常希望在重定向到上一页时闪存输入,因此您可以轻松地将输入闪存链式调用到重定向中。

php
return Redirect::to('form')->withInput();

return Redirect::to('form')->withInput(Input::except('password'));
lightbulb

您可以使用 Session 类在请求之间闪存其他数据。

检索旧数据

php
Input::old('username');

文件

检索上传的文件

php
$file = Input::file('photo');

确定文件是否已上传

php
if (Input::hasFile('photo'))
{
	//
}

file 方法返回的对象是 Symfony\Component\HttpFoundation\File\UploadedFile 类的一个实例,该类扩展了 PHP 的 SplFileInfo 类,并提供了多种与文件交互的方法。

确定上传的文件是否有效

php
if (Input::file('photo')->isValid())
{
	//
}

移动上传的文件

php
Input::file('photo')->move($destinationPath);

Input::file('photo')->move($destinationPath, $fileName);

检索上传文件的路径

php
$path = Input::file('photo')->getRealPath();

检索上传文件的原始名称

php
$name = Input::file('photo')->getClientOriginalName();

检索上传文件的扩展名

php
$extension = Input::file('photo')->getClientOriginalExtension();

检索上传文件的大小

php
$size = Input::file('photo')->getSize();

检索上传文件的 MIME 类型

php
$mime = Input::file('photo')->getMimeType();

请求信息

Request 类提供了许多方法来检查您应用程序的 HTTP 请求,并扩展了 Symfony\Component\HttpFoundation\Request 类。以下是一些亮点。

检索请求 URI

php
$uri = Request::path();

检索请求方法

php
$method = Request::method();

if (Request::isMethod('post'))
{
	//
}

确定请求路径是否匹配模式

php
if (Request::is('admin/*'))
{
	//
}

获取请求 URL

php
$url = Request::url();

检索请求 URI 段

php
$segment = Request::segment(1);

检索请求头

php
$value = Request::header('Content-Type');

从 $_SERVER 中检索值

php
$value = Request::server('PATH_INFO');

确定请求是否通过 HTTPS

php
if (Request::secure())
{
	//
}

确定请求是否使用 AJAX

php
if (Request::ajax())
{
	//
}

确定请求是否具有 JSON 内容类型

php
if (Request::isJson())
{
	//
}

确定请求是否请求 JSON

php
if (Request::wantsJson())
{
	//
}

检查请求的响应格式

Request::format 方法将根据 HTTP Accept 头返回请求的响应格式:

php
if (Request::format() == 'json')
{
	//
}