我目前正在尝试允许用户归档已经完成的事件。
然后将在存档表中查看该事件。
所以基本上我有一个归档表和一个事件表,当用户想要归档事件时,他们应该能够在归档添加表单中查看事件(需要由$ id填充)事件)。
但我不知道如何填充该字段..我已经尝试设置一个值..但事件不是会话,所以不起作用,我也尝试在开始时设置$ id形式,但也没有用。
以下是事件控制器中我的归档功能的代码。
public function archive($id = null) {
if ($this->request->is('post')) {
$event = $this->Event->read($id);
$archive['Archive'] = $event['Event'];
$archive['Archive']['eventID'] = $archive['Archive']['archiveID'];
unset($archive['Archive']['archiveID']);
$this->loadModel('Archive');
$this->Archive->create();
if ($this->Archive->save($archive)) {
$this->Session->setFlash(__('The event has been archived'));
$this->Event->delete($id);
$this->redirect(array('action' => 'eventmanage'));
} else {
$this->Session->setFlash(__('The event could not be archived. Please, contact the administrator.'));
}
}
}
答案 0 :(得分:0)
您需要执行以下操作之一:
使用控制器中的$this->request->data
设置字段的值。
public function add($id = null) {
if ($this->request->is('post')) {
[..snip..]
}
$this->loadModel('Event');
$event = $this->Event->read($id);
$this->request->data['Archive'] = $event['Event'];
}
OR
更新表单以设置值。
使用相同的事件更新现有代码:
public function add($id = null) {
if ($this->request->is('post')) {
[..snip..]
}
$this->loadModel('Event');
$this->set('event', $this->Event->read($id));
}
然后在Archives / add.ctp文件的表单中,更新每个输入以反映$ event的值。
echo $this->Form->input('eventID', array('type' => 'hidden', 'value' => $event['Event']['id']));
OR
编写一个将移动记录的函数。
在名为“存档”的事件视图上放置一个按钮。在事件控制器中创建一个将存档事件的方法。
public function archive($id = null) {
if ($this->request->is('post')) {
$event = $this->Event->read($id);
$archive['Archive'] = $event['Event'];
$archive['Archive']['event_id'] = $archive['Archive']['id'];
unset($archive['Archive']['id']);
$this->loadModel('Archive');
$this->Archive->create();
if ($this->Archive->save($archive)) {
$this->Session->setFlash(__('The event has been archived'));
$this->Event->delete($id);
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The event could not be archived. Please, contact the administrator.'));
}
}
}