如何在 Yii2 中更新记录时显示表单字段

我能够创造一个新记录。我使用两种模型来创建记录。数据保存到两个表中。

<?= $form->field($model, 't_name')->textInput(['maxlength' => true]) ?>



<div class="row">

    <div class="panel panel-default">

        <div class="panel-heading"><h4><i class="glyphicon glyphicon-flash"></i> Tariff Slabs</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' => 10, // the maximum times, an element can be cloned (default 999)

                'min' => 1, // 0 or 1 (default 1)

                'insertButton' => '.js-add-filter', // css class

                'deleteButton' => '.js-remove-filter', // css class

                'model' =>  $modelsTariffSlabs[0],

                'formId' => 'dynamic-form',

                 'formFields' => [

                    'slab_name',

                    'slab_start',

                    'slab_end',

                    'rate'

                ],

            ]); ?>

现在,当我尝试更新它时,我不是第二个模型的数据。

https://img3.sycdn.imooc.com/64d5fc1c00019f2411160364.jpg


慕标5832272
浏览 101回答 2
2回答

POPMUISE

或者您可以像这样调用关系(当您处于更新模式时):$modelsTariffSlabs = $model->mdcTariffSlabs如果mdcTariffSlabs是关系的名称 - 如果相关模型则返回数组。或者,如果您没有关系,您可以在主模型中创建它:&nbsp;public function getMdcTariffSlabs(){&nbsp; &nbsp; return $this->hasMany(MdcTariffSlabs::className(), ['t_id' => 'id']);}

慕运维8079593

我认为问题出在这一行$modelsTariffSlabs = [new MdcTariffSlabs()];它总是创建一个空模型。您必须获取所有保存的记录。下面的代码应该可以工作假如说$modelTariffSlabs->t_id = $model->id; // t_id is id of your main tableprotected function findModelSlabs($id){&nbsp; &nbsp; if (($model = MdcTariffSlabs::find()->where(['t_id'=>$id])->all()) !== null) {&nbsp; &nbsp; &nbsp; &nbsp; return $model;&nbsp; &nbsp; }&nbsp; &nbsp; throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));}然后改变$modelsTariffSlabs = [new MdcTariffSlabs()];到$modelsTariffSlabs = $this->findModelSlabs($model->id);我希望这个能帮上忙
打开App,查看更多内容
随时随地看视频慕课网APP