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

Формы и HTML

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

  1. 1. Открытие формы
  2. 2. Защита от CSRF
  3. 3. Привязка модели к форме
  4. 4. Метки
  5. 5. Текстовые и скрытые поля
  6. 6. Флажки и кнопки переключения
  7. 7. Числа
  8. 8. Загрузка файлов
  9. 9. Выпадающие списки
  10. 10. Кнопки
  11. 11. Макросы
  12. 12. Генерация URLs
Этот перевод актуален для англоязычной документации на (ветка 4.2) , (ветка 4.1) и (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.

Открытие формы

Открытие формы

PHP
{{ Form::open(array('url' => 'foo/bar')) }}
  
//
{{ Form::close() }}

По умолчанию используется метод POST, но вы можете указать другой метод:

PHP
echo Form::open(array('url' => 'foo/bar''method' => 'put'))

Внимание: так как HTML-формы поддерживают только методы POST и GET, методы PUT и DELETE будут автоматически сэмулированы и переданы в скрытом поле _method.

Также вы можете открыть форму, которая может указывать на именованный маршрут или действие контроллера:

PHP
echo Form::open(array('route' => 'route.name'))

echo 
Form::open(array('action' => 'Controller@method'))

Вы можете передавать им параметры таким образом:

PHP
echo Form::open(array('route' => array('route.name'$user->id)))

echo 
Form::open(array('action' => array('Controller@method'$user->id)))

Если ваша форма будет загружать файлы, добавьте опцию files:

PHP
echo Form::open(array('url' => 'foo/bar''files' => true))

Защита от CSRF

Добавление CSRF-строки в форму

Laravel предоставляет простую защиту от подделки межсайтовых запросов. Сперва случайная последовательность символов помещается в сессию. Если вы используете метод PHPForm::open с методами PHPPOST, PHPPUT или PHPDELETE, то CSRF-последовательность будет автоматически добавлена в вашу форму в виде скрытого поля. Есть и другой вариант, если вы хотите сгенерировать HTML-код для этого поля, вы можете использовать метод PHPtoken():

PHP
echo Form::token();

Присоединение CSRF-фильтра к маршруту

PHP
Route::post('profile', array('before' => 'csrf', function () {
  
//
}));

Привязка модели к форме

Открытие формы для модели

Зачастую вам надо представить содержимое модели в виде формы. Чтобы сделать это, используйте метод PHPForm::model():

PHP
echo Form::model($user, array('route' => array('user.update'$user->id)))

Теперь, когда вы генерируете элемент формы — такой, как текстовое поле — значение свойства модели, соответствующее этому полю, будет присвоено ему автоматически. Так, для примера, значение текстового поля, названного email, будет установлено в значение свойства модели пользователя email. Но это еще не всё! Если в сессии будет переменная, чьё имя соответствует имени текстового поля, то будет использовано это значение, а не свойство модели.

Итак, приоритет выглядит следующим образом:

  1. Переменная сессии (старый ввод)
  2. Напрямую переданные значения в запрос
  3. Свойство модели

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

Внимание: при использовании PHPForm::model() всегда закрывайте форму при помощи метода PHPForm::close()!

Метки

Генерация элемента метки (label)

PHP
echo Form::label('email''Адрес e-mail');

Передача дополнительных атрибутов для тега

PHP
echo Form::label('email''Адрес e-mail', array('class' => 'awesome'));

Внимание: после создания метки, любой элемент формы созданный вами, имя которого соответствует имени метки, автоматически получит её ID.

Текстовые и скрытые поля

Создание текстового поля ввода

PHP
echo Form::text('username');

Указание значения по умолчанию

PHP
echo Form::text('email''example@gmail.com');

Внимание: методы PHPhidden() и PHPtextarea() принимают те же параметры, что и метод PHPtext().

Генерация поля ввода пароля

PHP
echo Form::password('password');

Генерация других полей

PHP
echo Form::email($name$value null$attributes = array());
echo 
Form::file($name$attributes = array());

Флажки и кнопки переключения

Генерация флажка или кнопки переключения (radio button)

PHP
echo Form::checkbox('name''value');

echo 
Form::radio('name''value');

Генерация флажка или кнопки, выбранной по умолчанию

PHP
echo Form::checkbox('name''value'true);

echo 
Form::radio('name''value'true);
+ 4.2

добавлено в 4.2 ()

Числа

Генерация числового поля ввода

PHP
echo Form::number('name''value');

Загрузка файлов

Генерация поля загрузки файла

PHP
echo Form::file('image');

Форма должна быть открыта со значением параметра PHPfiles равным PHPtrue.

Выпадающие списки

Генерация выпадающего списка

PHP
echo Form::select('size', array('L' => 'Большой''S' => 'Маленький'));

Генерация списка со значением по умолчанию

PHP
echo Form::select('size', array('L' => 'Большой''S' => 'Маленький'), 'S');

Генерация списка с группами (optgroup)

PHP
echo Form::select('animal', array(
  
'Кошки' => array('leopard' => 'Леопард'),
  
'Собаки' => array('spaniel' => 'Спаниель'),
));

Генерация выпадающего списка с диапазоном значений

PHP
echo Form::selectRange('number'1020);

Генерация списка с названиями месяцев

PHP
echo Form::selectMonth('month');

Кнопки

Генерация кнопки отправки формы

PHP
echo Form::submit('Нажми меня!');

Вам нужно создать кнопку (xml<button>)? Используйте метод PHPbutton() — он принимает те же параметры, что и PHPsubmit().

Макросы

Регистрация макроса для PHPForm

К классу PHPForm можно легко добавлять собственные методы; они называются «макросами». Вот как это работает. Сперва зарегистрируйте макрос с нужным именем и функцией-замыканием:

PHP
Form::macro('myField', function () {
  return 
'<input type="awesome">';
});

Теперь вы можете вызвать макрос, используя его имя.

Вызов макроса

PHP
echo Form::myField();

Генерация URLs

За подробностями по генерации URLs загляните в документацию по функциям.

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

Разметка: ? ?

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