为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕标5832272 2023-08-11 17:14:12
我能够创造一个新记录。我使用两种模型来创建记录。数据保存到两个表中。<?= $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'                ],            ]); ?>现在,当我尝试更新它时,我不是第二个模型的数据。
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

或者您可以像这样调用关系(当您处于更新模式时):


$modelsTariffSlabs = $model->mdcTariffSlabs

如果mdcTariffSlabs是关系的名称 - 如果相关模型则返回数组。或者,如果您没有关系,您可以在主模型中创建它:


 public function getMdcTariffSlabs()

{

    return $this->hasMany(MdcTariffSlabs::className(), ['t_id' => 'id']);

}


查看完整回答
反对 回复 2023-08-11
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我认为问题出在这一行


$modelsTariffSlabs = [new MdcTariffSlabs()];


它总是创建一个空模型。您必须获取所有保存的记录。下面的代码应该可以工作


假如说$modelTariffSlabs->t_id = $model->id; // t_id is id of your main table


protected function findModelSlabs($id)

{


    if (($model = MdcTariffSlabs::find()->where(['t_id'=>$id])->all()) !== null) {


        return $model;

    }


    throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));

}

然后改变


$modelsTariffSlabs = [new MdcTariffSlabs()];


$modelsTariffSlabs = $this->findModelSlabs($model->id);

我希望这个能帮上忙


查看完整回答
反对 回复 2023-08-11
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信