13

我有两个模型Group_onesGroup_twos. ac_config.ctp我在文件中显示这个值。

我的控制器代码如下

public function ac_config($id = null)
    {
        if (!$id) {
            $this->Session->setFlash('Please provide a Site id');
            $this->redirect(array('action'=>'dashboard'));
        }

        $site_id_1          = $this->GroupOne->findById($id);
        $site_name          = $site_id_1['GroupOne']['site_name'];
        $ac_one_time        = $site_id_1['GroupOne']['ac_on_time_one'];
        $group_one_active   = $site_id_1['GroupOne']['active'];

        $site_id_2          = $this->GroupTwo->findById($id);
        $ac_two_time        = $site_id_2['GroupTwo']['ac_on_time_two']; 
        $group_two_active   = $site_id_2['GroupTwo']['active'];


        if (!$site_id_1) {
            $this->Session->setFlash('Invalid Site ID Provided');
            $this->redirect(array('action'=>'dashboard'));
        }

        if (!$site_id_2) {
            $this->Session->setFlash('Invalid Site ID Provided');
            $this->redirect(array('action'=>'dashboard'));
        }

        if ($this->request->is('post') || $this->request->is('put')) {
            $this->GroupOne->id = $id;
            $this->GroupTwo->id = $id;

            if (($this->GroupTwo->save($this->request->data)) || ($this->GroupOne->save($this->request->data))) {
                $this->Session->setFlash(__('AC Configuration has been update'));
                $this->redirect(array('action' => 'ac_config', $id));
            }
            else
            {
                $this->Session->setFlash(__('Unable to AC Configuration has been update.'));
            }
        }

        $this->set(compact('site_name','ac_one_time','group_one_active'));
        $this->set(compact('ac_two_time','group_two_active'));

        $this->set('group_one', $site_id_1);
        $this->set('group_two', $site_id_2);

        if (!$this->request->data) {
            $this->request->data = $site_id_1;
            $this->request->data = $site_id_2;  
        }
    }

我的查看内容如下 Image_one

当我save按下按钮时出现问题。它仅将 group-2 表单值保存在数据库中。当AC Run TimeAC Rest Time显示Group-2表单值保存在数据库中Model Group_twos并且显示AC Run Time然后表单值保存在数据库中。AC Rest TimeGroup-1Model Group_ones

另一个问题如下

if (!$this->request->data) {
    $this->request->data = $site_id_1;
    $this->request->data = $site_id_2;  // this show rest time, run time
}

如果我写上面的代码,那么我得到

图像_二

if (!$this->request->data) {
    $this->request->data = $site_id_2;
    $this->request->data = $site_id_1;  //this show rest time, run time.
} 

如果我再次编写上面的代码,那么我会得到

图像_三

但是我同时需要AC Run Time and AC Rest Time两个组,当我单击保存按钮时,任何两个对应组值的组都保存在模型中。什么我错了我的逻辑。

谢谢你的帮助。

4

2 回答 2

8

在设置请求数据之前简单地合并两个数组:

if (!$this->request->data) { $this->request->data = array_merge($site_id_1, $site_id_2); }

如果这没有帮助,那么查看视图的代码也会很有用。

于 2017-09-19T18:21:14.897 回答
6

根据您的代码,您正在覆盖请求数据数组。您需要做的是您必须单独设置两个数组或通过合并到单个数组中。

在您当前的代码覆盖$site_id_1下方$site_id_2

 $this->request->data = $site_id_1;
 $this->request->data = $site_id_2;

现在您可以通过以下方式传递数据:

$this->request->data['site_id_1'] = $site_id_1;
$this->request->data['site_id_2'] = $site_id_2;

或者

$this->request->data = array_merge($site_id_1, $site_id_2);

你只需要改变这两行。

此外,我不知道您如何在两个模型的视图中获取结果,但您可以单独获取数据,如下所示:

$site_id_1 = $this->request->getData('site_id_1');
$site_id_2 = $this->request->getData('site_id_2');
于 2017-09-22T05:55:55.057 回答