使用带有onchange事件的创建表单来更新表单

时间:2019-10-06 07:03:32

标签: yii2

再次返回此论坛。 开始询问所有yii2课程 我正在使用_form进行创建和更新。 我使用事件onchange来调用另一个具有创建表单中的关系名称的表。问题是当我使用此表单进行更新时,由于没有触发器事件更改,所以两个字段仍然为空。这是我的表格代码

  <?php $idnpwp = ArrayHelper::map(Mfwp::find()->all(),"id", "npwp");?>

  <?= $form->field($model, 'id_sm_wp')->widget(Select2::classname(), [
    'language' => 'id',
    'data' => $idnpwp,
    'options' => ['placeholder' => 'Select a NPWP ...'],
    'pluginOptions' => [
    'allowClear' => true
    ],

    'pluginEvents' => [
       'change'=>'function(event){
       var data_id = event.currentTarget.value;
       $.post("'.Url::to(['mfwp/lists']).'?id="+data_id,function(data){


       $("input#namas").val(data.nama_wp);$("#alamats").val(data.alamat_wp);        
       $("input#nips").val(data.nip_pendek);
       $("input#namaar").val(data.pejabat.nama)
            });
        }'
     ]

   ]);

?>
<?php   if ($this->action->id == "update"){           


        //what code should be

    }
 ?>
<label> Nama Wajib Pajak </label>

<?= Html::textInput('nama','', $options=['id' => 'namas','class'=>'form- 
control', 'style'=>'width:1140px;margin-left:0px']) ?>

<br>

<label> Alamat Wajib Pajak </label>

<?= Html::textArea('alamat','', $options=['id' => 'alamats','class'=>'form- 
control', 'style'=>'width:1140px;margin-left:0px']) ?>

<br>

<table >

<tr>
    <th>
        <label> NIP </label>            
        <?= Html::input('text','nip','', $options=['id' => 
           'nips','class'=>'form-control', 'style'=>'width:200px;margin- 
           left:0px']) ?>
    </th>
    <th>
        <label style='margin-left:100px'> Nama Account Representative 
        </label>
        <?= Html::input('text','nama','', $options=['id' => 
          'namaar','class'=>'form-control', 
          'style'=>'width:840px;margin-left:100px']) ?>
    </th>
</tr>

</table>
<br>

我应该阅读任何参考文献以处理这种情况。.thx

1 个答案:

答案 0 :(得分:1)

如果我明白你想要什么 那么从我的角度来看,最好的方法就是使用setter和getter

例如:

替换此代码

<?= Html::input('text','nip','', $options=['id' => 
       'nips','class'=>'form-control', 'style'=>'width:200px;margin- 
       left:0px']) ?>

使用以下代码:

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

此后,您需要在此模型($ model)中添加一个setter和getter方法。

还添加一个私有财产 $ _ nip 设置方法应为:

public function setNip($value)
{
    $this->_nip = $value;
}

u需要处理保存逻辑。 吸气方法应为:

public function getNip($value)
{
    if(empty($this->_nip)){
        // Code to get the value from other Table
    }
    return $this->_nip;
}

最后不要忘记将新属性添加到rules方法,以便模型在模型中进行设置。