Запросы и входные данные
11.x
.
Почему это важно?
Текущие входные данные
Вы можете получить доступ ко всем данным, переданным приложению, используя всего несколько простых методов. Вам не нужно думать о том, какой тип HTTP-запроса был использован (GET, POST и т.д.) – методы работают одинаково для любого из них.
Получение переменной
$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');
Примечание: Некоторые JavaScript-библиотеки, такие как Backbone, могут передавать переменные в виде JSON. Вне зависимости от этого
Input::get
будет работать одинаково.
Cookies
Все cookie, создаваемые Laravel, шифруются и подписываются специальным кодом – таким образом, если они изменятся на клиенте, то они станут неверными и не будут приниматься фреймворком.
Чтение cookie
$value = Cookie::get('name');
Добавление cookie к ответу (response)
$response = Response::make('Hello World');
$response->withCookie(Cookie::make('name', 'value', $minutes));
Помещение cookie в очередь на выставление
Может возникнуть ситуация, когда вам нужно установить определенную cookie в том месте кода, где response (ответ) еще не создан. В таком случай используйте Cookie::queue()
– cookie будет автоматически добавлена в response после его окончательного формирования.
Cookie::queue($name, $value, $minutes);
Создание cookie, которая хранится вечно
$cookie = Cookie::forever('name', 'value');
Старые входные данные
Вам может пригодиться сохранение входных данных между двумя запросами. Например, после проверки формы на корректность вы можете заполнить её старыми значениями в случае ошибки.
Сохранение всего ввода для следующего запроса
Input::flash();
Сохранение некоторых переменных для следующего запроса
// Сохранить только перечисленные:
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
, который в свою очередь расширяет стандартный класс SplFileInfo
, который предоставляет множество методов для работы с файлами.
Проверка загруженного файла на валидность
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)
Класс Request
содержит множество методов для изучения входящего запроса в вашем приложении. Он расширяет класс Symfony\Component\HttpFoundation\Request
. Ниже – несколько полезных примеров.
Получение URI (пути) запроса
$uri = Request::path();
Определение метода запроса (GET, POST и т.п.)
$method = Request::method();
if (Request::isMethod('post'))
{
//
}
Соответствует ли запрос маске пути?
if (Request::is('admin/*'))
{
//
}
Получение URL запроса
$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')
{
//
}