metalguardian / yii2-form-builder
此包已被弃用且不再维护。未建议替代包。
小型易用表单生成器
1.0.1
2016-03-06 20:13 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2020-01-24 15:38:45 UTC
README
小型易用表单生成器。您可以将表单配置存储在表单模型中。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist metalguardian/yii2-form-builder "~1.0"
或者将以下内容添加到您的 composer.json
文件的 require 部分:
"metalguardian/yii2-form-builder": "~1.0"
to the require section of your composer.json
file.
使用方法
首先需要编写表单配置(您可以将其存储在模型类中)
<?php
namespace app\models;
use metalguardian\formBuilder\ActiveFormBuilder;
/**
*/
class Example extends \yii\db\ActiveRecord
{
.....
/**
* @return array
*/
public function getFormConfig()
{
return [
'label' => [
'type' => ActiveFormBuilder::INPUT_TEXT,
],
'content' => [
'type' => ActiveFormBuilder::INPUT_TEXTAREA,
'hint' => 'hint about field',
],
'type' => [
'type' => ActiveFormBuilder::INPUT_DROPDOWN_LIST,
'items' => [1 => 'One', 2 => 'Two'],
'options' => [
'prompt' => 'select',
],
],
'published' => [
'type' => ActiveFormBuilder::INPUT_CHECKBOX,
],
'redactor' => [
'type' => ActiveFormBuilder::INPUT_WIDGET,
'widgetClass' => \vova07\imperavi\Widget::className(),
],
'raw_data' => [ // need to define attribute `raw_data` in model
'type' => ActiveFormBuilder::INPUT_RAW,
'value' => 'raw html data',
],
];
}
}
现在在表单视图中,您可以写一些类似以下的内容
.....
<?php $form = \metalguardian\formBuilder\ActiveFormBuilder::begin(); ?>
<?= $form->renderForm($model, $model->getFormConfig()) ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?>
</div>
<?php \metalguardian\formBuilder\ActiveFormBuilder::end(); ?>
.....
高级使用
您可以在模型中定义不同元素的配置
<?php
namespace app\helpers;
use metalguardian\formBuilder\ActiveFormBuilder;
/**
*/
class Helper
{
.....
/**
* @return array
*/
public static function getLabelConfig()
{
return [
'type' => ActiveFormBuilder::INPUT_TEXT,
];
}
/**
* @return array
*/
public static function getContentConfig()
{
return [
'type' => ActiveFormBuilder::INPUT_TEXTAREA,
];
}
}
现在您可以在一个表单中使用不同的模型
.....
<?php $form = \metalguardian\formBuilder\ActiveFormBuilder::begin(); ?>
<?= $form->renderField($model1, 'label', \app\helpers\Helper::getLabelConfig()); ?>
<?= $form->renderField($model1, 'content', \app\helpers\Helper::getContentConfig()); ?>
<?= $form->renderField($model2, 'label', \app\helpers\Helper::getLabelConfig()); ?>
<?= $form->renderField($model2, 'content', \app\helpers\Helper::getContentConfig()); ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?>
</div>
<?php \metalguardian\formBuilder\ActiveFormBuilder::end(); ?>
.....