У меня есть две модели 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;
}
}
Проблема возникает, когда я 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
}
Если я напишу этот код выше, то я получу
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
обе группы одновременно, и когда я нажимаю кнопку «Сохранить», любые две группы, соответствующие значению группы, сохраняются в модели. В чем моя неправильно моя логика.
Спасибо за вашу помощь.
Просто объедините два массива перед установкой данных запроса:
if (!$this->request->data) {
$this->request->data = array_merge($site_id_1, $site_id_2);
}
Если это не поможет, было бы полезно увидеть код вашего представления.
Согласно вашему коду, вы перезаписываете массив данных запроса. что вам нужно сделать, это то, что вы должны установить оба массива отдельно или путем объединения в один массив.
Ниже вашего текущего кода перезаписи $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');