Ввод
Класс PHPInput
обрабатывает ввод, поступивший от клиента через HTTP-запрос методом GET, POST, PUT или DELETE. Ниже даны примеры, как прочитать эти данные с помощью класса Input.
$email = Input::get('email');
В отличии от маршрутизации, где «get» обозначает тип HTTP-запроса, в Input «get» используется как «получить» и работает для любого из четырёх HTTP-методов (GET, POST, PUT и DELETE).
$input = Input::get();
Получить весь ввод, включая загруженные файлы ($_FILES):
$input = Input::all();
По умолчанию, Laravel вернёт null, если запрошенная переменная не была передана. Вы можете указать другое значение, передав его вторым параметром в PHPInput::get
:
$name = Input::get('name', 'Fred');
Использование Closure для возврата значения по умолчанию:
$name = Input::get('name', function() {return 'Fred';});
Этот способ более эффективен, чем вычисление значения по умолчанию и передача через переменную, так как функция будет вызвана только в случае, когда значение не было найдено.
Проверка ввода на содержание нужной переменной:
if (Input::has('name')) ...
Внимание: метод PHPInput::has
вернёт false, если переменная — пустая строка (PHP''
).
Файлы
Чтение всех загруженных файлов из $_FILES:
$files = Input::file();
Получение определённого файла:
$picture = Input::file('picture');
Метод PHPInput::file
возвращает массив в обычном для PHP формате (см. $_FILES) с полями name (имя, которое файл имел на системе пользователя), type (MIME-тип), size (размер в байтах), tmp_name (временный путь к загруженному файлу на сервере), error (код ошибки).
Чтение свойства загруженного файла:
$size = Input::file('picture.size');
Старый ввод
Вам часто нужно будет заполнить форму ранее введёнными данными пользователя, если они не прошли проверку. Класс PHPInput
был разработан с учётом этой задачи. Рассмотрим пример, как легко вы можете сохранить данные формы и получить их в следующем запросе.
Для начала вам нужно сохранить ввод в данных сессии:
Input::flash();
Input::flash('only', array('username', 'email'));
Input::flash('except', array('password', 'credit_card'));
Чтение сохранённых данных из предыдущего запроса:
$name = Input::old('name');
Вам нужно указать драйвер сессии в настройках проекта перед использованием метода PHPInput::old
.
Переадресация со старым вводом
Теперь вы знаете, как сохранить предыдущий ввод. Есть короткий способ сохранения ввода и переадресации клиента на новый адрес (например, на страницу формы, которая не прошла проверку):
return Redirect::to('login')->with_input();
Переадресация с сохранением отдельных полей:
return Redirect::to('login')->with_input('only', array('username'));
return Redirect::to('login')->with_input('except', array('password'));
Cookies
Laravel содержит удобный класс PHPCookie
для работы с cookies (см. $_COOKIE). Однако перед его использованием вам нужно знать о следующих особенностях:
- Все cookies, установленные Laravel, содержат подпись — это гарантирует, что данные не были изменены клиентом.
- При сохранении cookie оно не становится доступным сразу же в этом же запросе — Laravel сохраняет его в очереди и браузер получит все новые cookies (или новые/удалённые значения старых) только после отправки всей страницы. Таким образом, вы не можете установить cookie и прочитать его в рамках одного запроса.
$name = Cookie::get('name');
Чтение значения со значением по умолчанию, если cookie не определена:
$name = Cookie::get('name', 'Fred');
Установка cookie с удалением через 60 минут:
Cookie::put('name', 'Fred', 60);
Установка cookie со сроком истечения 5 лет («навсегда»):
Cookie::forever('name', 'Fred');
Cookie::forget('name');
Комментарии (1)
Не удаляются куки при работе с CookieJar. Использую:
Cookie::forget('myname');
Cookie::unqueue('myname');