假设我在我的items
控制器中。
好吧,假设我正在执行我的view
操作(网址类似于/items/view/10012?date=2013-09-30
),其中列出了在给定日期属于客户的项目列表。
我想链接以添加新项目。我会像这样使用 htmlhelper:
echo $this->Html('action'=>'add');
在我的add
操作中,我有一个表单,其中包含 和 之类的client_id
字段item_date
。
当我在view
执行操作时,我知道这些值,因为我在特定日期查看特定客户的项目。我想将这些变量传递给我的add
操作,以便它将预填充表单上的这些字段。
如果我在我的link
( '?' => array('client_id'=>$client_id)
) 中添加一个查询字符串,它会中断添加操作,因为如果请求不是 POST,它将给出错误。如果我使用 aform->postLink
我会得到另一个错误,因为添加操作的 POST 数据只能用于添加记录,而不是传递数据以预填充表单。
我基本上想让view
页面上的链接将这两个变量传递给add
控制器中的操作,这样我就可以定义一些变量来预填充表单。有没有办法做到这一点?
这是我的add
控制器代码。它的内容可能与我上面的问题有所不同,因为我试图稍微简化问题,但这个概念仍然应该适用。
public function add(){
if ($this->request->is('post')) {
$this->Holding->create();
if ($this->Holding->save($this->request->data)) {
$this->Session->setFlash(__('Holding has been saved.'), 'default', array('class' => 'alert alert-success'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to add your holding.'), 'default', array('class' => 'alert alert-danger'));
}
$this->set('accounts', $this->Holding->Account->find('list'));
$sedol_list = $this->Holding->Sedol->find('all', array(
'fields' => array(
'id', 'sedol_description'
),
'recursive' => 0,
'order' => 'description'
)
);
$this->set('sedols', Hash::combine($sedol_list, '{n}.Sedol.id', '{n}.Sedol.sedol_description') );
}