请求和输入
基本输入
您可以使用一些简单的方法访问所有用户输入。使用Input
外观,因为所有动词都以相同的方式访问输入。全球的input
辅助功能 是的别名Input::get
.
检索输入值
$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');
NOTE: 某些 JavaScript 库(例如 Backbone)可能会将输入作为 JSON 发送到应用程序。您可以通过访问这些数据
Input::get
像正常一样。
Cookies
默认情况下,Winter 创建的所有 cookie 都经过加密并使用验证码签名,这意味着如果它们被客户端更改,它们将被视为无效。中命名的 Cookiecookie.unencryptedCookies
配置密钥不会被加密。
NOTE: Cookie 是使用 APP_KEY 加密的,因此如果客户知道 APP_KEY,则他们有可能制作 cookie。如果您的应用程序的加密密钥在恶意方手中,该方可以使用加密密钥制作 cookie 值并利用继承到 PHP 对象序列化/反序列化的漏洞,例如在您的应用程序中调用任意类方法。为了缓解这种情况,如果您怀疑它已被泄露,请始终轮换您的 APP_KEY,并确保在使用它之前始终验证您从 cookie 收到的数据是否符合您的预期。
检索 cookie 值
$value = Cookie::get('name');
将新 cookie 附加到响应
$response = Response::make('Hello World');
$response->withCookie(Cookie::make('name', 'value', $minutes));
为下一个响应排队 cookie
如果您想在创建响应之前设置 cookie,请使用Cookie::queue
方法。 cookie 将自动附加到您的应用程序的最终响应中。
Cookie::queue($name, $value, $minutes);
创建一个永远持续的 cookie
$cookie = Cookie::forever('name', 'value');
处理未加密的 cookie
如果您不想对某些cookie 进行加密或解密,您可以在配置中指定它们。 这很有用,例如,当您希望通过 cookie 将数据从前端传递到服务器端后端时,反之亦然。
将不应加密或解密的cookie的名称添加到unencryptedCookies
中的参数config/cookie.php
配置文件。
/*
|--------------------------------------------------------------------------
| Cookies that should not be encrypted
|--------------------------------------------------------------------------
|
| Winter CMS encrypts/decrypts cookies by default. You can specify cookies
| that should not be encrypted or decrypted here. This is useful, for
| example, when you want to pass data from frontend to server side backend
| via cookies, and vice versa.
|
*/
'unencryptedCookies' => [
'my_cookie',
],
或者对于插件,您也可以从Plugin.php
你的插件。
public function boot()
{
Config::push('cookie.unencryptedCookies', "my_cookie");
}
旧输入
您可能需要将来自一个请求的输入保留到下一个请求。例如,您可能需要在检查验证错误后重新填充表单。
将输入闪烁到会话
Input::flash();
只闪烁会话的一些输入
Input::flashOnly('username', 'email');
Input::flashExcept('password');
由于您经常希望闪烁输入与重定向到上一页相关联,因此您可以轻松地将输入闪烁链接到重定向上。
return Redirect::to('form')->withInput();
return Redirect::to('form')->withInput(Input::except('password'));
NOTE: 您可以使用Session 班级。
检索旧数据
Input::old('username');
Files
检索上传的文件
$file = Input::file('photo');
判断文件是否上传
if (Input::hasFile('photo')) {
//
}
返回的对象file
方法是一个实例Symfony\Component\HttpFoundation\File\UploadedFile
类,它扩展了 PHPSplFileInfo
类并提供多种与文件交互的方法。
判断上传的文件是否有效
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 类型
$mime = Input::file('photo')->getMimeType();
请求信息
这Request
类提供了许多方法来检查应用程序的 HTTP 请求并扩展了Symfony\Component\HttpFoundation\Request
班级。这儿是一些精彩片段。
检索请求 URI
$uri = Request::path();
检索请求方法
$method = Request::method();
if (Request::isMethod('post')) {
//
}
确定请求路径是否与模式匹配
if (Request::is('admin/*')) {
//
}
获取请求地址
$url = Request::url();
检索请求 URI 段
$segment = Request::segment(1);
检索请求标头
$value = Request::header('Content-Type');
从 $_SERVER 检索值
$value = Request::server('PATH_INFO');
确定请求是否通过 HTTPS
if (Request::secure()) {
//
}
确定请求是否使用 AJAX
if (Request::ajax()) {
//
}
确定请求是否具有 JSON 内容类型
if (Request::isJson()) {
//
}
确定请求是否要求 JSON
if (Request::wantsJson()) {
//
}
检查请求的响应格式
这Request::format
方法将根据 HTTP Accept 标头返回请求的响应格式:
if (Request::format() == 'json') {
//
}