Подписывайтесь на наш Telegram канал и будьте в курсе всех событий.

Запросы и входные данные

Вы просматриваете документ для прошлой версии.
Рассмотрите возможность обновления вашего проекта до актуальной версии 10.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')
{
	//
}