Может войдёшь?
Черновики Написать статью Профиль

Ввод и cookies

перевод документация 3.x

  1. 1. Ввод
  2. 2. Файлы
  3. 3. Старый ввод
  4. 4. Переадресация со старым вводом
  5. 5. Cookies

Ввод

Класс PHPInput обрабатывает ввод, поступивший от клиента через HTTP-запрос методом GET, POST, PUT или DELETE. Ниже даны примеры, как прочитать эти данные с помощью класса Input.

Чтение входное значение:

PHP
$email Input::get('email');

В отличии от маршрутизации, где «get» обозначает тип HTTP-запроса, в Input «get» используется как «получить» и работает для любого из четырёх HTTP-методов (GET, POST, PUT и DELETE).

Получить весь ввод:

PHP
$input Input::get();

Получить весь ввод, включая загруженные файлы ($_FILES):

PHP
$input Input::all();

По умолчанию, Laravel вернёт null, если запрошенная переменная не была передана. Вы можете указать другое значение, передав его вторым параметром в PHPInput::get:

PHP
$name Input::get('name''Fred');

Использование Closure для возврата значения по умолчанию:

PHP
$name Input::get('name', function() {return 'Fred';});

Этот способ более эффективен, чем вычисление значения по умолчанию и передача через переменную, так как функция будет вызвана только в случае, когда значение не было найдено.

Проверка ввода на содержание нужной переменной:

PHP
if (Input::has('name')) ...

Внимание: метод PHPInput::has вернёт false, если переменная — пустая строка (PHP'').

Файлы

Чтение всех загруженных файлов из $_FILES:

PHP
$files Input::file();

Получение определённого файла:

PHP
$picture Input::file('picture');

Метод PHPInput::file возвращает массив в обычном для PHP формате (см. $_FILES) с полями name (имя, которое файл имел на системе пользователя), type (MIME-тип), size (размер в байтах), tmp_name (временный путь к загруженному файлу на сервере), error (код ошибки).

Чтение свойства загруженного файла:

PHP
$size Input::file('picture.size');

Старый ввод

Вам часто нужно будет заполнить форму ранее введёнными данными пользователя, если они не прошли проверку. Класс PHPInput был разработан с учётом этой задачи. Рассмотрим пример, как легко вы можете сохранить данные формы и получить их в следующем запросе.

Для начала вам нужно сохранить ввод в данных сессии:

PHP
Input::flash();

Сохранение отдельных полей:

PHP
Input::flash('only', array('username''email'));

Input::flash('except', array('password''credit_card'));

Чтение сохранённых данных из предыдущего запроса:

PHP
$name Input::old('name');

Вам нужно указать драйвер сессии в настройках проекта перед использованием метода PHPInput::old.

Связанные темы:

Переадресация со старым вводом

Теперь вы знаете, как сохранить предыдущий ввод. Есть короткий способ сохранения ввода и переадресации клиента на новый адрес (например, на страницу формы, которая не прошла проверку):

PHP
return Redirect::to('login')->with_input();

Переадресация с сохранением отдельных полей:

PHP
return Redirect::to('login')->with_input('only', array('username'));

return 
Redirect::to('login')->with_input('except', array('password'));

Cookies

Laravel содержит удобный класс PHPCookie для работы с cookies (см. $_COOKIE). Однако перед его использованием вам нужно знать о следующих особенностях:

  1. Все cookies, установленные Laravel, содержат подпись — это гарантирует, что данные не были изменены клиентом.
  2. При сохранении cookie оно не становится доступным сразу же в этом же запросе — Laravel сохраняет его в очереди и браузер получит все новые cookies (или новые/удалённые значения старых) только после отправки всей страницы. Таким образом, вы не можете установить cookie и прочитать его в рамках одного запроса.

Чтение значения cookie:

PHP
$name Cookie::get('name');

Чтение значения со значением по умолчанию, если cookie не определена:

PHP
$name Cookie::get('name''Fred');

Установка cookie с удалением через 60 минут:

PHP
Cookie::put('name''Fred'60);

Установка cookie со сроком истечения 5 лет («навсегда»):

PHP
Cookie::forever('name''Fred');

Удаление cookie:

PHP
Cookie::forget('name');

Комментарии (1)

Archakov06

Не удаляются куки при работе с CookieJar. Использую:

PHP
Cookie::forget('myname');
Cookie::unqueue('myname');

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.