你可以經由幾個簡潔的方法拿到使用者的輸入資料。不需要擔心發出請求時使用的 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 失效。
$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')
{
//
}