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:
NOTE: This extension depends on the kartik-v/yii2-widgets extension, which in turn depends on the yiisoft/yii2-bootstrap extension. Check the composer.json for this extension's requirements and dependencies. Note: Yii 2 framework is still in active development, and until a fully stable Yii2 release, your core yii2-bootstrap packages (and its dependencies) may be updated when you install or update this extension. You may need to lock your composer package versions for your specific app, and test for extension break if you do not wish to auto update dependencies.
\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.
- Configure your own hints to display below each active field attribute.
- 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.
- Configure your own hints to display below each active field attribute.
- 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.
Note: You must set the
minimum-stability
todev
in the composer.json file in your application root folder before installation of this extension.
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.