请求和输入

基本输入

您可以使用一些简单的方法访问所有用户输入。使用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') {
    //
}
豫ICP备18041297号-2