Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Yii2动态表单(嵌套动态表单)更新_Javascript_Php_Jquery_Yii2 - Fatal编程技术网

Javascript 使用Yii2动态表单(嵌套动态表单)更新

Javascript 使用Yii2动态表单(嵌套动态表单)更新,javascript,php,jquery,yii2,Javascript,Php,Jquery,Yii2,在我的yii2项目中,我有一个嵌套的动态表单,它使用扩展。我可以让它在接下来的时间里工作,但我不得不请求帮助使它正常工作。 但当我尝试添加更多字段时,我在更新时遇到了一个小问题 在解释之前,让我先展示一下我的场景: 我的问题是: 更新记录时,当我单击添加新的插槽字段时,它会添加我已经添加的组数,而不是只添加一个 例如: 在上图中,我有两个组(组1和组2)。如果单击添加一个插槽,它会同时添加两个(组数)插槽 有人能帮我吗 控制器中的My actionUpdate: 公共功能操作更新($id)

在我的yii2项目中,我有一个嵌套的动态表单,它使用扩展。我可以让它在接下来的时间里工作,但我不得不请求帮助使它正常工作。 但当我尝试添加更多字段时,我在更新时遇到了一个小问题

在解释之前,让我先展示一下我的场景:

我的问题是: 更新记录时,当我单击添加新的插槽字段时,它会添加我已经添加的组数,而不是只添加一个

例如: 在上图中,我有两个组(组1和组2)。如果单击添加一个插槽,它会同时添加两个(组数)插槽

有人能帮我吗

控制器中的My actionUpdate:
公共功能操作更新($id)
{
$model=$this->findModel($id);
$oldGrupoIds=MissaoGrupo::find()->select('id')->where(['missao_id'=>$id])->asArray()->all();
$oldGrupoIds=ArrayHelper::getColumn($oldGrupoIds,'id');
$modelsGrupos=MissaoGrupo::findAll(['id'=>$oldGrupoIds]);
$modelsGrupos=(空($modelsGrupos))?[new MissaoGrupo]:$modelsGrupos;
$oldslottids=[];
foreach($modelsGrupos as$i=>modelGrupo){
$oldSlots=MissaoSlot::findAll(['grupo_id'=>$modelGrupo->id]);
$modelsSlots[$i]=$oldSlots;
$oldslottids=array_merge($oldslottids,ArrayHelper::getColumn($oldSlots,'id'));
$modelsSlots[$i]=(空($modelsSlots[$i])?[新的MissaoSlot]:$modelsSlots[$i];
}
如果($model->load(Yii::$app->request->post()){
$modelsGrupos=Model::createMultiple(MissaoGrupo::classname(),$modelsGrupos);
Model::loadMultiple($modelsGrupos,Yii::$app->request->post());
$newGrupoIds=ArrayHelper::getColumn($modelsGrupos,'id');
$newSlotIds=[];
$loadsData[''u csrf']=Yii::$app->request->post()[''u csrf'];
$i=0;
foreach($modelsGrupos作为$id=>$value){
$loadsData['MissaoSlot']=Yii::$app->request->post()['MissaoSlot'][$i];
如果(!isset($modelsSlots[$id])){
$modelsSlots[$id]=[新插槽];
}
$modelsSlots[$id]=Model::createMultiple(MissaoSlot::classname(),$modelsSlots[$id],$loadsData);
Model::loadMultiple($modelsSlots[$id],$loadsData);
$newSlotIds=array_merge($newSlotIds,ArrayHelper::getColumn($loadsData['MissaoSlot'],'id'));
$i++;
}
$delSlotIds=array_diff($oldSlotIds,$newSlotIds);
如果(!empty($delSlotIds))MissaoSlot::deleteAll(['id'=>$delSlotIds]);
$delGrupoIds=array_diff($oldGrupoIds,$newGrupoIds);
如果(!empty($delGrupoIds))MissaoGrupo::deleteAll(['id'=>$delGrupoIds]);
$valid=$model->validate();
$valid=$this->validaMissao($modelsGrupos,$modelsSlots)&&valid;
如果($有效){
如果($this->saveMissao($model,$modelsGrupos,$modelsSlots)){
返回$this->redirect(['view','id'=>$model->id]);
}
}
}
返回$this->render('update'[
'model'=>$model,
'modelsGrupos'=>$modelsGrupos,
'modelsSlots'=>$modelsSlots,
]);
}
受保护的函数saveMissao($modelMissao、$modelsGrupos、$modelsSlots)
{
$transaction=\Yii::$app->db->beginTransaction();
试一试{
如果($go=$modelMissao->保存(false)){
foreach($modelsGrupos as$i=>modelGrupo){
//萨尔瓦·奥斯·格鲁波斯酒店
$modelGrupo->missao\u id=$modelMissao->id;
如果($go=$modelGrupo->save(false)){
foreach($modelsslot[$i]作为$j=>$modelSlot){
//Salva os插槽
$modelSlot->grupo\u id=$modelGrupo->id;
如果(!($go=$modelSlot->save(false))){
$transaction->rollBack();
打破
}
}
}
}
}
如果($go){
$transaction->commit();
}
}捕获(例外$e){
$transaction->rollBack();
}
返回$go;
}
我的表格:



Grupos/插槽 # 格鲁波 狭槽 诺沃槽