как видно значение двух моделей в одном представлении и обновляет значение двух моделей одним контроллером

У меня есть две модели Group_ones а также Group_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 кнопка. Это только сохранить значения формы группы 2 в базе данных. когда AC Run Time а также AC Rest Time шоу Group-2 затем значения формы сохраняются в базе данных Model Group_twos а также AC Run Time а также AC Rest Time шоу Group-1 затем значения формы сохраняются в базе данных Model Group_ones,

Еще одна проблема ниже

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

Если я напишу этот код выше, то я получу

Image_two

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

Опять же, если я напишу этот код выше, я получу

Image_three

Но мне нужно AC Run Time and AC Rest Time обе группы одновременно, и когда я нажимаю кнопку «Сохранить», любые две группы, соответствующие значению группы, сохраняются в модели. В чем моя неправильно моя логика.

Спасибо за вашу помощь.

12

Решение

Просто объедините два массива перед установкой данных запроса:

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

Если это не поможет, было бы полезно увидеть код вашего представления.

8

Другие решения

Согласно вашему коду, вы перезаписываете массив данных запроса. что вам нужно сделать, это то, что вы должны установить оба массива отдельно или путем объединения в один массив.

Ниже вашего текущего кода перезаписи $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');
6

По вопросам рекламы [email protected]