Запросы и ввод
- 1. Базовый ввод
- 2. Cookies
- 3. Старый ввод
- 4. Файлы
- 5. Информация о запросе
Этот перевод актуален для англоязычной документации на 25.05.2014 (ветка 4.1) и 16.10.2014 (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.
Базовый ввод
Вы можете получить доступ ко всем данным, переданным приложению, используя всего несколько простых методов. Вам не нужно думать о том, какой тип 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');
При работе с переменными-массивами вы можете использовать точечную запись для доступа к их элементам:
$input = Input::get('products.0.name');
Некоторые JavaScript-библиотеки, такие как Backbone, могут передавать переменные в виде JSON. Вне зависимости от этого Input::get() будет работать одинаково.
Cookies
Все cookie, создаваемые Laravel, шифруются и подписываются специальным кодом — таким образом, если клиент изменит их значение, то они станут неверными.
Чтение 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');
Старый ввод
Вам может пригодиться сохранение пользовательского ввода между двумя запросами. Например, после проверки формы на корректность вы можете заполнить её старыми значениями в случае ошибки.
Сохранение всего ввода для следующего запроса
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, который предоставляет множество методов для работы с файлами.
+ 4.1
добавлено в 4.1 (25.05.2014)
Прошёл ли загруженный файл проверку?
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 содержит множество методов для изучения входящего запроса в вашем приложении. Он расширяет класс Symfony\Component\HttpFoundation\Request. Ниже — несколько полезных примеров.
Получение URI (пути) запроса
$uri = Request::path();
+ 4.1
добавлено в 4.1 (25.05.2014)
Получение метода запроса
$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()) {
//
}
+ 4.1
добавлено в 4.1 (25.05.2014)
Содержит ли запрос данные типа JSON?
if (Request::isJson())
{
//
}
Требует ли запрос данные типа JSON?
if (Request::wantsJson())
{
//
}
Определение запрашиваемого формата отклика
Метод Request::format() вернёт запрашиваемый формат отклика на основе заголовка HTTP Accept:
if (Request::format() == 'json')
{
//
}