{{TOC}} == Ввод == Класс %%Input%% обрабатывает ввод, поступивший от клиента через ((ВП:HTTP))-запрос методом //GET//, //POST//, //PUT// или //DELETE//. Ниже даны примеры, как прочитать эти данные с помощью класса **Input**. **Чтение входное значение:** %% $email = Input::get('email'); %% .(alert) В отличии от ((docs/v3/routing маршрутизации)), где "get" обозначает тип HTTP-запроса, в **Input** "get" используется как "получить" и работает для любого из четырёх HTTP-методов (//GET//, //POST//, //PUT// и //DELETE//). **Получить весь ввод:** %% $input = Input::get(); %% **Получить весь ввод, включая загруженные файлы ([[http://www.php.net/manual/ru/features.file-upload.post-method.php $_FILES]]):** %% $input = Input::all(); %% По умолчанию, Laravel вернёт **null**, если запрошенная переменная не была передана. Вы можете указать другое значение, передав его вторым параметром в %%Input::get%%: %% $name = Input::get('name', 'Fred'); %% **Использование ((http://php.net/manual/ru/class.closure.php Closure)) для возврата значения по умолчанию:** %% $name = Input::get('name', function() {return 'Fred';}); %% Этот способ более эффективен, чем вычисление значения по умолчанию и передача через переменную, так как функция будет вызвана только в случае, когда значение не было найдено. **Проверка ввода на содержание нужной переменной:** %% if (Input::has('name')) ... %% .(alert) **Внимание:** метод %%Input::has%% вернёт **false**, если переменная - пустая строка (%%''%%). == Файлы == **Чтение всех загруженных файлов из [[http://www.php.net/manual/ru/features.file-upload.post-method.php $_FILES]]:** %% $files = Input::file(); %% **Получение определённого файла:** %% $picture = Input::file('picture'); %% Метод %%Input::file%% возвращает массив в обычном для PHP формате (см. [[http://www.php.net/manual/ru/features.file-upload.post-method.php#example-343 $_FILES]]) с полями **name** (имя, которое файл имел на системе пользователя), **type** ([[ВП:MIME]]-тип), **size** (размер в байтах), **tmp_name** (временный путь к загруженному файлу на сервере), **error** ([[http://www.php.net/manual/ru/features.file-upload.errors.php код ошибки]]). **Чтение свойства загруженного файла:** %% $size = Input::file('picture.size'); %% == Старый ввод == Вам часто нужно будет заполнить форму ранее введёнными данными пользователя, если они не прошли проверку. Класс %%Input%% был разработан с учётом этой задачи. Рассмотрим пример, как легко вы можете сохранить данные формы и получить их в следующем запросе. Для начала вам нужно **сохранить ввод в данных сессии**: %% Input::flash(); %% **Сохранение отдельных полей:** %% Input::flash('only', array('username', 'email')); Input::flash('except', array('password', 'credit_card')); %% **Чтение сохранённых данных из предыдущего запроса:** %% $name = Input::old('name'); %% .(alert) Вам нужно указать **драйвер сессии** в настройках проекта перед использованием метода %%Input::old%%. .(further_reading) Связанные темы: * ((docs/v3/session/usage)) == Переадресация со старым вводом == Теперь вы знаете, как сохранить предыдущий ввод. Есть короткий способ **сохранения ввода и переадресации клиента на новый адрес** (например, на страницу формы, которая не прошла проверку): %% 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 содержит удобный класс %%Cookie%% для работы с cookies (см. [[http://www.php.net/manual/ru/reserved.variables.cookies.php $_COOKIE]]). Однако перед его использованием вам нужно знать о следующих особенностях: 1. Все cookies, установленные Laravel, содержат //подпись// - это гарантирует, что данные не были изменены клиентом. 2. При сохранении cookie оно не становится доступным сразу же в этом же запросе - Laravel сохраняет его в очереди и браузер получит все новые cookies (или новые/удалённые значения старых) только после отправки всей страницы. Таким образом, вы не можете установить cookie и прочитать его в рамках одного запроса. **Чтение значения 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:** %% Cookie::forget('name'); %%