您的位置:首页 > 编程语言 > PHP开发

08. Laravel 4 用户请求中的数据

2013-12-21 11:34 447 查看

当前请求数据

获取用户提交的所有数据

$data = Input::all();

**注意:**这里获取到的数据包含 GET 和 POST 提交的所有数据,并且 GET 的优先级更高。

所以类似下面的提交将会得到这样的数据
array(2) { ["foo"]=> string(3) "get" ["baz"]=> string(3) "get" }


<!-- app/views/form.blade.php -->
<form action="{{ url('/') }}?foo=get&baz=get" method="POST">
<input type="hidden" name="foo" value="bar" />
<input type="hidden" name="baz" value="boo" />
<input type="submit" value="Send" />
</form>

获取指定数据

$data = Input::get('foo');

用户若未传递
foo
参数,则默认为
NULL
,此时可以为其设定默认值:

$data = Input::get('foo', 'defaultValue');

判断请求中是否包含某一参数

$result = Input::has('foo');

获取请求中的部分数据

以下方法皆可

$result = Input::only('foo', 'baz');


$result = Input::only(array('foo', 'baz'));


当然还有排除法:

以下方法皆可

$result = Input::except('foo', 'baz');


$result = Input::except(array('foo', 'baz'));


之前请求的数据(旧数据)

闪存所有旧数据

在上一个请求 结束前 将用户数据闪存:

Input::flash();

闪存部分旧数据

Input::flashOnly('foo');
Input::flashOnly('first', 'second', 'third');
Input::flashOnly(array('first', 'second', 'third'));

当然,还有排除法:

Input::flashExcept('foo');
Input::flashExcept('first', 'second', 'third');
Input::flashExcept(array('first', 'second', 'third'));

旧数据的获取方法

在接下来的请求中,可以通过以下方法取出闪存的数据:

Input::old();
Input::old('first', 'second', 'third');
Input::old(array('first', 'second', 'third'));

请求重定向时的快捷闪存

// app/routes.php
Route::get('/', function()
{
return Redirect::to('new/request')->withInput();
});

以上操作相当于:

// app/routes.php
Route::get('/', function()
{
Input::flash();return Redirect::to('new/request');
});

其它可用的快捷闪存方法:

return Redirect::to('new/request')->withInput(Input::only('foo'));
return Redirect::to('new/request')->withInput(Input::except('foo'));

用户上传的文件

获取文件对象

var_dump(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')->copy('/storage/directory');    // 复制文件到指定文件夹
Input::file('book')->rename('newName.pdf');         // 重命名

实际用例:

Route::post('handle-form', function()
{
$name = Input::file('book')->getClientOriginalName();
Input::file('book')->move('/storage/directory', $name);
return 'File was moved.';
});

Cookies

设置 和 获取 Cookies

// app/routes.php
Route::get('/', function()
{
$cookie = Cookie::make('low-carb', 'almond cookie', 30);
return Response::make('Nom nom.')->withCookie($cookie);
});
Route::get('/nom-nom', function()
{
$cookie = Cookie::get('low-carb', 'defaultValue');
var_dump($cookie);
});

判断指定 Cookies 是否存在

var_dump(Cookie::has('low-carb'));

设置长效 Cookies

// app/routes.php
Route::get('/', function()
{
$cookie = Cookie::forever('low-carb', 'almond cookie');
return Response::make('Nom nom.')->withCookie($cookie);
});

删除指定 Cookies

Cookie::forget('low-carb');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  laravel data request cookies
相关文章推荐