请求与输入


基本输入数据

您可以经由几个简洁的方法拿到用户的输入数据。不需要担心发出请求时使用的 HTTP 响应方式,取得输入数据的方式都是相同的。

取得特定输入数据

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

取得特定输入数据,若没有便则取默认值

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

确认是否有输入数据

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

取得所有发出请求时传入的输入数据

$input = Input::all();

取得部分发出请求时传入的输入数据

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

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

如果是“数组”形式的输入数据,可以使用“点”语法取得数组:

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

提醒: 有些 JavaScript 函数库如 Backbone 可能会送出 JSON 格式的输入数据,但是一样可以使用 Input::get 取得数据。

Cookies

Laravel 建立的 cookie 会加密并且加上认证记号,意味着如果cookie被客户端擅自改动,会导致 cookie 失效。

取得 Cookie 值

$value = Cookie::get('name');

加上新的 Cookie 到回应

$response = Response::make('Hello World');

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

加入 Cookie 队列到下一个回应

如果您想在回应被建立前设定 cookie ,使用 Cookie::queue() 方法。 Cookie 会在最后自动加到回应里。

Cookie::queue($name, $value, $minutes);

建立永久有效的 Cookie

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

旧输入数据

您可能想要在用户下一次发送请求前,保留这次的输入数据。例如,您可能需要在表单验证失败后重新填入之前输入的表单值。

将输入数据存成一次性 Session

Input::flash();

将部分输入数据存成一次性 Session

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

Input::flashExcept('password');

您很可能常常需要在重新跳转至前一页,并将输入数据存成一次性 Session 。只要在重定向跳转方法串接的方法中传入输入数据,就能简单地完成。

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

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

提示: 您可以使用 Session 类将不同请求数据存成其他一次性 Session。

取得旧输入数据

Input::old('username');

上传文件

取得上传文件

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

确认文件是否有上传

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

file 方法回传的对象是 Symfony\Component\HttpFoundation\File\UploadedFile 的实例, UploadedFile 继承了 PHP 的 SplFileInfo 类并且提供了很多方法和文件互动。

确认上传的文件是否有效

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

移动上传文件

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

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

取得上传文件所在的路径

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

取得上传文件的原始名称

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

取得上传文件的后缀名

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

取得上传文件的大小

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

取得上传文件的 MIME 类型

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

请求信息

Request 类提供很多方法检查 HTTP 请求,它继承了 Symfony\Component\HttpFoundation\Request 类,下面是一些使用方式。

取得请求 URI

$uri = Request::path();

取得请求方法

$method = Request::method();

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

确认请求路径是否符合特定格式

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

取得请求 URL

$url = Request::url();

取得请求 URI 部分片段

$segment = Request::segment(1);

取得请求 header

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

从 $_SERVER 取得值

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

确认是否为 HTTPS 请求

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

确认是否为 AJAX 请求

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

确认请求是否有 JSON Content Type

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

确认是否要求 JSON 回应

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

确认要求的回应格式

Request::format 方法会基于 HTTP Accept 标头回传请求的回应格式:

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