metalguardian/yii2-form-builder

此包已被弃用且不再维护。未建议替代包。

小型易用表单生成器

安装数: 25,125

依赖项: 0

建议者: 0

安全性: 0

星标: 13

关注者: 8

分支: 10

开放性问题: 0

类型:yii2-extension

1.0.1 2016-03-06 20:13 UTC

This package is not auto-updated.

Last update: 2020-01-24 15:38:45 UTC


README

小型易用表单生成器。您可以将表单配置存储在表单模型中。

Latest Stable Version Total Downloads Latest Unstable Version License

Scrutinizer Code Quality Code Coverage Build Status Code Climate

安装

安装此扩展的首选方式是通过 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(); ?>
.....