跟我学Laravel之请求与输入
基本输入
laravel使用一种简单的方式来访问用户提交的信息。 你可以用统一的方式来访问用户提交的信息,而不用为用户提交信息的方式操心。
获取一个用户提交的值
$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));
加入下一个response的cookie队列之中
如果想在response创建之前设置cookie,可以使用 cookie::queue() 方法。cookie将通过应用框架自动添加到最终的response之中。
cookie::queue($name, $value, $minutes);
创建一个永不过期的cookie键值对
$cookie = cookie::forever('name', 'value');
用户提交信息持久化
有时可能需要在用户的多个请求之间持久化用户提交的信息。 比如,当用户提交的信息验证失败重新返回提交信息页面时还原用户的输入。
将用户提交的信息存入session
input::flash();
把指定的用户提交的信息存入session
input::flashonly('username', 'email');
input::flashexcept('password');
如果你需要关联持久用户提交的信息的操作和重定向操作,可以使用如下的链式调用的方法:
return redirect::to('form')->withinput();
return redirect::to('form')->withinput(input::except('password'));
注意: 如果你想持久化其它的信息,请参考 session 类.
获取已持久化的用户提交的信息
input::old('username');
文件上传
获取用户上传的文件
$file = input::file('photo');
判断指定文件是否已经被上传
if (input::hasfile('photo'))
{
//
}
file 方法返回了一个 symfony\component\httpfoundation\file\uploadedfile 类的实例, 该类继承自php的 splfileinfo 类,并提供了大量操作该用户上传的文件的方法。
移动一个已上传的文件
input::file('photo')->move($destinationpath);
input::file('photo')->move($destinationpath, $filename);
获取一个已上传的文件在服务器的真实路径
$path = input::file('photo')->getrealpath();
获取一个已上传的文件的大小
$size = input::file('photo')->getsize();
获取一个已上传的文件的 mime 类型
$mime = input::file('photo')->getmimetype();
用户请求的详细信息
request 类提供了许多 方法 用于获取关于请求的详细信息,该类继承自 symfony\component\httpfoundation\request 类。 下面提供了几个具有代表性的方法:
获取请求uri
$uri = request::path();
判断请求路径是否符合指定模式
if (request::is('admin/*'))
{
//
}
获取请求url
$url = request::url();
获取请求uri信息
$segment = request::segment(1);
获取请求头里的content-type信息
$value = request::header('content-type');
获取 $_server 数组里指定的值
$value = request::server('path_info');
判断是否是使用ajax请求
if (request::ajax())
{
//
}
判断请求是否使用https连接
if (request::secure())
{
//
}
检测请求的响应格式
request::format 方法基于 http 请求头的 accept 信息返回客户端希望获取的响应格式:
if (request::format() == 'json')
{
//
}