Laravel 4之请求
获取请求数据
获取当前请求所包括的所有GET和POST数据
Route::get('/',function()
{
$data =Input::all();
var_dump($data);
});
输入http://myapp.dev/?foo=bar&baz=boo
,得到
array(2){["foo"]=>string(3)"bar"["baz"]=>string(3)"boo"}
获取GET数据
Input::get('foo');
如果请求中没有foo数据,返回NULL,可以指定默认值
Input::get('foo','bar');
判断提交的信息是否存在
Input::has('foo');
存在返回ture,不存在返回false
获取指定的信息
Input::only('foo','baz');
只返回foo,baz的信息
Input::except(array('foo','baz'));
返回除了foo,baz以外的信息
请求数据持久化
通常请求数据只在当前请求中有效,一旦跨请求就会实效,比如
Route::get('/',function()
{
returnRedirect::to('new/request');
});
Route::get('new/request',function()
{
var_dump(Input::all());
});
输入http://myapp.dev/?foo=one&bar=two
,返回的是array(0) { }
。使用Input::flash()
和Input::old()
,可以将数据存入session
Route::get('/',function()
{
Input::flash();
returnRedirect::to('new/request');
});
Route::get('new/request',function()
{
var_dump(Input::old());
});
跟Input::get()
类似,也可以获取单个数据
Input::old('bar')
只将部分数据存入session
Input::flashOnly('foo');
或是
Input::flashExcept('foo');
以上方法除了接受参数列表,还可以接受数组形式如
Input::old(array('first','second','third'));
Input::flashOnly(array('first','second','third'));
Input::flashExcept(array('first','second','third'));
使用withInput()
,效果跟上面一样
Route::get('/',function()
{
returnRedirect::to('new/request')->withInput();
});
或是部分
returnRedirect::to('new/request')->withInput(Input::only('foo'));
returnRedirect::to('new/request')->withInput(Input::except('foo'));
上传文件
上传文件表单
<!-- app/views/form.blade.php -->
<formaction=""
method="POST"
enctype="multipart/form-data">
<inputtype="file"name="book"/>
<inputtype="submit">
</form>
获取上传文件Input::file('book')
Route::get('/',function()
{
returnView::make('form');
});
Route::post('handle-form',function()
{
var_dump(Input::file('book'));
});
Input::file('book')
更多的方法
Input::file('book')->getFileName();
Input::file('book')->getClientOriginalName();
Input::file('book')->getClientSize();
Input::file('book')->getMimeType();
Input::file('book')->guessExtension();
Input::file('book')->getRealPath();
Input::file('book')->move('/storage/directory');
Input::file('book')->move('/storage/directory', $name);
更多方法参考Symfony UploadedFile class API
Cookies
设置Cookie
Route::get('/',function()
{
$cookie =Cookie::make('low-carb','almond cookie',30);
returnResponse::make('Nom nom.')->withCookie($cookie);
});
使用Cookie
$cookie =Cookie::get('low-carb');
判断Cookie是否存在
Cookie::has('low-carb');
永远的Cookie
$cookie =Cookie::forever('low-carb','almond cookie');
删除Cookie
Cookie::forget('low-carb');