如何在Yii2中创建动态字段?

时间:2015-05-11 03:16:22

标签: input yii2 yii2-advanced-app

我有一个表,我保存字段名称。 现在我想在另一个模型中使用这些字段。那么,我怎样才能给那个领域命名呢?

e.g。  我有一个名为Config的表fields(id,key)。 数据可以是

1, Blog url
2, Site url

现在,我有一个表单,管理员将这些值添加到数据库。

在Yii2中,我们创建输入字段,如

<?= $form->field($model, 'name')->textInput() ?>

但我想创建两个名为blog urlsite url的文本框。 那么,我该如何创建呢?我需要写什么代替name

1 个答案:

答案 0 :(得分:0)

在命令提示符

上运行此代码
php composer.phar require --prefer-dist wbraganca/yii2-dynamicform "*"

完成上述代码后。

在表单中添加以下代码。 _form.php这个

<div class="panel panel-default">
    <div class="panel-heading"><h4><i class="glyphicon glyphicon-envelope"></i> Addresses</h4></div>
    <div class="panel-body">
         <?php DynamicFormWidget::begin([
            'widgetContainer' => 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_]
            'widgetBody' => '.container-items', // required: css class selector
            'widgetItem' => '.item', // required: css class
            'limit' => 4, // the maximum times, an element can be cloned (default 999)
            'min' => 1, // 0 or 1 (default 1)
            'insertButton' => '.add-item', // css class
            'deleteButton' => '.remove-item', // css class
            'model' => $modelsAddress[0],
            'formId' => 'dynamic-form',
            'formFields' => [
                'name',
            ],
        ]); ?>

        <div class="container-items"><!-- widgetContainer -->
        <?php foreach ($modelsAddress as $i => $modelAddress): ?>
            <div class="item panel panel-default"><!-- widgetBody -->
                <div class="panel-heading">
                    <h3 class="panel-title pull-left">Address</h3>
                    <div class="pull-right">
                        <button type="button" class="add-item btn btn-success btn-xs"><i class="glyphicon glyphicon-plus"></i></button>
                        <button type="button" class="remove-item btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button>
                    </div>
                    <div class="clearfix"></div>
                </div>
                <div class="panel-body">
                    <?php
                        // necessary for update action.
                        if (! $modelAddress->isNewRecord) {
                            echo Html::activeHiddenInput($modelAddress, "[{$i}]id");
                        }
                    ?>
                    <?= $form->field($model, "[{$i}]name")->textInput(['maxlength' => true]) ?>

                </div>
            </div>
        <?php endforeach; ?>
        </div>
        <?php DynamicFormWidget::end(); ?>
    </div>
</div>