{{TOC}} {{DOCVER 4.0=0da300f6445bec5a70d007f503834fce957b065b 16.10.2014 5:19:26, 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 6:21:03, 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15}} == Открытие формы == **Открытие формы** %% {{ Form::open(array('url' => 'foo/bar')) }} // {{ Form::close() }} %% По умолчанию используется метод **POST**, но вы можете указать другой метод: %% echo Form::open(array('url' => 'foo/bar', 'method' => 'put')) %% .(alert) **Внимание:** так как HTML-формы поддерживают только методы POST и GET, методы PUT и DELETE будут автоматически сэмулированы и переданы в скрытом поле %%(t)_method%%. Также вы можете открыть форму, которая может указывать на ((docs/v4/routing#именованны+е))й маршрут или действие ((docs/v4/controllers контроллера)): %% echo Form::open(array('route' => 'route.name')) echo Form::open(array('action' => 'Controller@method')) %% Вы можете передавать им параметры таким образом: %% echo Form::open(array('route' => array('route.name', $user->id))) echo Form::open(array('action' => array('Controller@method', $user->id))) %% Если ваша форма будет ((#загру+зка))жать файлы, добавьте опцию %%(t)files%%: %% echo Form::open(array('url' => 'foo/bar', 'files' => true)) %% == Защита от CSRF == **Добавление CSRF-строки в форму** Laravel предоставляет простую защиту от ((ВП:CSRF подделки межсайтовых запросов)). Сперва случайная последовательность символов помещается в ((docs/v4/session сессию)). Если вы используете метод %%Form::open%% с методами %%POST%%, %%PUT%% или %%DELETE%%, то CSRF-последовательность будет автоматически добавлена в вашу форму в виде скрытого поля. Есть и другой вариант, если вы хотите сгенерировать HTML-код для этого поля, вы можете использовать метод %%token()%%: %% echo Form::token(); %% **Присоединение CSRF-((docs/v4/routing#фильтры_маршрутов фильтра)) к маршруту** %% Route::post('profile', array('before' => 'csrf', function () { // })); %% == Привязка модели к форме == **Открытие формы для модели** Зачастую вам надо представить содержимое ((docs/v4/eloquent модели)) в виде формы. Чтобы сделать это, используйте метод %%Form::model()%%: %% echo Form::model($user, array('route' => array('user.update', $user->id))) %% Теперь, когда вы генерируете элемент формы - такой, как текстовое поле - значение свойства модели, соответствующее этому полю, будет присвоено ему автоматически. Так, для примера, значение текстового поля, названного %%(t)email%%, будет установлено в значение свойства модели пользователя %%(t)email%%. Но это еще не всё! Если в ((docs/v4/session сессии)) будет переменная, чьё имя соответствует имени текстового поля, то будет использовано это значение, а не свойство модели. Итак, приоритет выглядит следующим образом: 1. Переменная сессии ([[docs/v3/requests#старый старый ввод]]) 2. Напрямую переданные значения в запрос 3. Свойство модели Это позволяет вам быстро строить формы, которые не только привязаны к свойствам модели, но и легко заполняются повторно, если произошла какая-нибудь ошибка на сервере. .(alert) **Внимание:** при использовании %%Form::model()%% всегда закрывайте форму при помощи метода %%Form::close()%%! == Метки == **Генерация элемента метки (//label//)** %% echo Form::label('email', 'Адрес e-mail'); %% **Передача дополнительных атрибутов для тега** %% echo Form::label('email', 'Адрес e-mail', array('class' => 'awesome')); %% .(alert) **Внимание:** после создания метки, любой элемент формы созданный вами, имя которого соответствует имени метки, автоматически получит её ID. == Текстовые и скрытые поля == **Создание текстового поля ввода** %% echo Form::text('username'); %% **Указание значения по умолчанию** %% echo Form::text('email', 'example@gmail.com'); %% .(alert) **Внимание:** методы %%hidden()%% и %%textarea()%% принимают те же параметры, что и метод %%text()%%. **Генерация поля ввода пароля** %% echo Form::password('password'); %% **Генерация других полей** %% echo Form::email($name, $value = null, $attributes = array()); echo Form::file($name, $attributes = array()); %% == Флажки и кнопки переключения == **Генерация флажка или кнопки переключения (//radio button//)** %% echo Form::checkbox('name', 'value'); echo Form::radio('name', 'value'); %% **Генерация флажка или кнопки, выбранной по умолчанию** %% echo Form::checkbox('name', 'value', true); echo Form::radio('name', 'value', true); %% %%(DOCNEW 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15) == Числа == **Генерация числового поля ввода** ~%% echo Form::number('name', 'value'); ~%% %% == Загрузка файлов == **Генерация поля загрузки файла** %% echo Form::file('image'); %% .(alert) Форма должна быть открыта со значением параметра %%files%% равным %%true%%. == Выпадающие списки == **Генерация выпадающего списка** %% echo Form::select('size', array('L' => 'Большой', 'S' => 'Маленький')); %% **Генерация списка со значением по умолчанию** %% echo Form::select('size', array('L' => 'Большой', 'S' => 'Маленький'), 'S'); %% **Генерация списка с группами (//optgroup//)** %% echo Form::select('animal', array( 'Кошки' => array('leopard' => 'Леопард'), 'Собаки' => array('spaniel' => 'Спаниель'), )); %% **Генерация выпадающего списка с диапазоном значений** %% echo Form::selectRange('number', 10, 20); %% **Генерация списка с названиями месяцев** %% echo Form::selectMonth('month'); %% == Кнопки == **Генерация кнопки отправки формы** %% echo Form::submit('Нажми меня!'); %% .(alert) Вам нужно создать кнопку (%%(html)