您可以经由几个简洁的方法拿到用户的输入数据。不需要担心发出请求时使用的 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
取得数据。
Laravel 建立的 cookie 会加密并且加上认证记号,意味着如果cookie被客户端擅自改动,会导致 cookie 失效。
$value = Cookie::get('name');
$response = Response::make('Hello World');
$response->withCookie(Cookie::make('name', 'value', $minutes));
如果您想在回应被建立前设定 cookie ,使用 Cookie::queue()
方法。 Cookie 会在最后自动加到回应里。
Cookie::queue($name, $value, $minutes);
$cookie = Cookie::forever('name', 'value');
您可能想要在用户下一次发送请求前,保留这次的输入数据。例如,您可能需要在表单验证失败后重新填入之前输入的表单值。
Input::flash();
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 = Input::file('photo')->getMimeType();
Request
类提供很多方法检查 HTTP 请求,它继承了 Symfony\Component\HttpFoundation\Request
类,下面是一些使用方式。
$uri = Request::path();
$method = Request::method();
if (Request::isMethod('post'))
{
//
}
if (Request::is('admin/*'))
{
//
}
$url = Request::url();
$segment = Request::segment(1);
$value = Request::header('Content-Type');
$value = Request::server('PATH_INFO');
if (Request::secure())
{
//
}
if (Request::ajax())
{
//
}
if (Request::isJson())
{
//
}
if (Request::wantsJson())
{
//
}
Request::format
方法会基于 HTTP Accept 标头回传请求的回应格式:
if (Request::format() == 'json')
{
//
}