Это Composer пакет для генерации HTML форм любой сложности. Он позволяет упростить создание формы полностью контролировать внешний вид формы расширять набор элементов формы подключать плагины создавать AJAX формы контролировать заполнение полей на клиенте и сервере сохранять данные форму в модель и загружать их в форму
Formbuilder installs just like any other package, via Composer : composer require nifus/formbuilder 0.1.x
.
Then if you're using Laravel, add Formbuilder's Service Provider to you config/app.php
file :
'providers' => array(
// ...
'Nifus\Formbuilder\FormbuilderServiceProvider',
),
And:
'aliases' => array(
// ...
'Formbuilder' => 'Nifus\Formbuilder\Facade',
),
Чтобы сформировать форму нужно создать экземпляр объекта \Nifus\FormBuilder\FormBuilder и передать ему массив данных описывающих форму и её параметры. Также можно использовать более простой ООП вариант, который в совокупности с современной IDE поможет вам проще ориентироваться в методах и свойствах объектов пакета.
Ниже рассмотрим детально именно вариант ООП использования. Для начала нужно создать объект \Nifus\FormBuilder\FormBuilder
$form = \Nifus\FormBuilder\FormBuilder::create('login');
login - это ID формы.
Дальше можно устанавливать привычные параметры формы:
$form->setAction('/login')
->setMethod('post')
->setEnctype('multipart/form-data')
..
Как видите методы можно вызывать цепочкой, избегая лишней писанины.
Внешний вид формы важная часть работы. Настроить его можно с помощью нескольких методов
$form->setRender('bootstrap3')
setRender настроит формат вывода формы. Возможны варианты: bootstrap3,paragraf,table,withoutformat. Также вы можете добавлять свои варианты оформления форм. withoutformat это универсальный вариант, при котором вместо фоормления вы получаете возможность оперировать всеми элементами формы самостоятельно. Это несколько усложняет процесс разработки, но позволяет работать с нестандартно свёрстанными формами.
$form->setCols(2)
Настроит количество столбцов формы. Этот метод актуален не для всех вариантов оформления. Его поддерживает bootstrap3 и table.
Мы подходим к самому важному этапу разработки формы. Это описание элементов или контролов из которых она состоит.
$form->setFields(
[
Formbuilder::createField('text')->setName('login')->setLabel('Login'),
Formbuilder::createField('password')->setName('pass')->setLabel('Password'),
]
)
Метод setFields принимает в качестве параметра массив объектов, каждый из которых описывает один элемент формы. Элементы формы не только стандартные, которые предоставлет нам html. Также есть возможность создавать свои. В пакете сегодня присутсвует более двух десятков полей, позволяющих значительно расширить возможности формы. Это и мультизагрузка файлов, визуальные редакторы и т.д.
Каждый элемент формы имеет свой набор методов. Опишем только стандартные, за остальными вам придётся обращаться к документации по методу или напрямую в код.
Formbuilder::createField('text')
->setName('login')
->setLabel('Login')
->set('id','login_id')
->set('class','red')
..
Кроме элементов формы, которые вы можете создавать сами в пакете есть ещё один инструмент расширения функционала и кастомизации формы. Это расширения. Расширения подключаются ко всей форме
$form->setExtensions(['Placeholder','Ajax'])
$form->render();
Если вы не используете withoutformat для оформления формы, то на выходе метод даст html код формы который достаточно вывести.
Форма это средство для добавления и редактирования данных. Чтобы заполненную форму можно было сохранить нам нужно указать с какой моделью идёт работа
->setModel('\User')
Если нужно не просто сгенерировать форму, а поместить в неё данные, то мы указыаем номер записи, котораю будет загружена
->setId(2)
Выше мы кратко рассмотрели базовые возможности пакета.