A form builder extension that allows you to build both single view and multi-view/tabular forms for Yii Framework 2.0. The extension contains these widgets:
\kartik\builder\Form
The Form Builder widget allows you to build a form through a configuration array. Key features available:
- Configure your form fields from a model extending
yii\base\model
oryii\db\ActiveRecord
. - Ability to support various Bootstrap 3.x form layouts. Uses the advanced
kartik\widgets\ActiveForm
. - Use Bootstrap column/builder layout styling by just supplying
columns
property. - Build complex layouts (for example single, double, or multi columns in the same layout) - by reusing the widget for building your attributes.
- Tweak ActiveForm defaults to control field options, styles, templates, and layouts.
- Various Bootstrap 3.x styling features are available by default. However, one can easily customize and theme it to one's liking using any CSS framework.
- Supports and renders HTML input types (uses
kartik\widgets\ActiveField
) including input widgets and more:INPUT_TEXT
ortextInput
INPUT_TEXTAREA
ortextarea
INPUT_PASSWORD
orpasswordInput
INPUT_DROPDOWN_LIST
ordropdownList
INPUT_LIST_BOX
orlistBox
INPUT_CHECKBOX
orcheckbox
INPUT_RADIO
orradio
INPUT_CHECKBOX_LIST
orcheckboxList
INPUT_RADIO_LIST
orradioList
INPUT_MULTISELECT
ormultiselect
INPUT_STATIC
orstaticInput
INPUT_FILE
orfileInput
INPUT_HTML5
orinput
INPUT_WIDGET
orwidget
INPUT_RAW
orraw
(any free text or html markup)
Refer the documentation for more details.
kartik\builder\TabularForm
The tabular form allows you to update information from multiple models (typically used in master-detail forms). Key features
- Supports all input types as mentioned in the
Form
builder widget - The widget works like a Yii GridView and uses an ActiveDataProvider to read the models information.
- Supports features of the builderview like pagination and sorting.
- Allows you to highlight and select table rows
- Allows you to add and configure action buttons for each row.
- Various Bootstrap 3.x styling features are available by default. However, one can easily customize and theme it to one's liking using any CSS framework.
- Advanced table styling, columns, and layout configuration by using the features available in the [
kartik\builder\GridView
](kartik\widgets\ActiveForm
widget. - One can easily read and manage the tabular input data using the
loadMultiple
andvalidateMultiple
functions inyii\base\Model
.
NOTE: The TabularForm widget depends on and uses the yii2-grid module. Hence, the
gridview
module needs to be setup in your Yii configuration file.
'modules' => [
'gridview' => [
'class' => '\kartik\grid\Module'
]
];
You can see detailed documentation on usage of the extension.
The preferred way to install this extension is through composer.
Either run
$ php composer.phar require kartik-v/yii2-builder "dev-master"
or add
"kartik-v/yii2-builder": "dev-master"
to the require
section of your composer.json
file.
use kartik\builder\Form;
$form = ActiveForm::begin();
echo Form::widget([
'model' => $model,
'form' => $form,
'columns' => 2,
'attributes' => [
'username' => ['type'=>Form::INPUT_TEXT, 'options'=>['placeholder'=>'Enter username...']],
'password' => ['type'=>Form::INPUT_PASSWORD, 'options'=>['placeholder'=>'Enter password...']],
'rememberMe' => ['type'=>Form::INPUT_CHECKBOX],
]
]);
ActiveForm::end();
use kartik\builder\TabularForm;
$form = ActiveForm::begin();
echo TabularForm::widget([
'form' => $form,
'dataProvider' => $dataProvider,
'attributes' => [
'id' => ['type' => TabularForm::INPUT_STATIC, 'columnOptions'=>['hAlign'=>GridView::ALIGN_CENTER]],
'name' => ['type' => TabularForm::INPUT_TEXT],
'color' => [
'type' => TabularForm::INPUT_WIDGET,
'widgetClass' => \kartik\widgets\ColorInput::classname()
],
'author_id' => [
'type' => TabularForm::INPUT_DROPDOWN_LIST,
'items'=>ArrayHelper::map(Author::find()->orderBy('name')->asArray()->all(), 'id', 'name')
],
'buy_amount' => [
'type' => TabularForm::INPUT_TEXT,
'options'=>['class'=>'form-control text-right'],
'columnOptions'=>['hAlign'=>GridView::ALIGN_RIGHT]
],
'sell_amount' => [
'type' => TabularForm::INPUT_STATIC,
'columnOptions'=>['hAlign'=>GridView::ALIGN_RIGHT]
],
],
'gridSettings' => [
'floatHeader' => true,
'panel' => [
'heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-book"></i> Manage Books</h3>',
'type' => GridView::TYPE_PRIMARY,
'after'=>
Html::a(
'<i class="glyphicon glyphicon-plus"></i> Add New',
$createUrl,
['class'=>'btn btn-success']
) . ' ' .
Html::a(
'<i class="glyphicon glyphicon-remove"></i> Delete',
$deleteUrl,
['class'=>'btn btn-danger']
) . ' ' .
Html::submitButton(
'<i class="glyphicon glyphicon-floppy-disk"></i> Save',
['class'=>'btn btn-primary']
)
]
]
]);
ActiveForm::end();
yii2-builder is released under the BSD 3-Clause License. See the bundled LICENSE.md
for details.