如何将表单的传递ID保持为另一种形式?例如,我有http://192.168.6.253/computers/brands/table/4
,它显示品牌所有记录所有来自条件computer_id = 4的计算机。现在我有add(),它指示我http://192.168.6.253/computers/brands/add
。
我现在的问题是我想保留computer_id = 4,这样当我添加一个新品牌时,它会将它保存到DB中的Brand.computer_id。所以我想要http://192.168.6.253/computers/brands/add/4
之类的东西。
我在这里如何调用视图中的add()
echo $this->Html->link('Add Brands Here', array(
'controller' => 'brands',
'action' => 'add'))
);
这里我如何在我的计算机视图中调用我的桌面品牌
echo $this->Html->link('P',array('action' => '../brands/table', $computer['Computer']['id']));
我的品牌add()和table()控制器
public function table($id = null){
if (!$id) {
throw new NotFoundException(__('Invalid post'));
}
$this->paginate = array(
'conditions' => array('Brand.computer_id' => $id),
'limit' => 10
);
$data = $this->paginate('Brand');
$this->set('brands', $data);
}
public function add() {
if ($this->request->is('post')) {
$this->Brand->create();
if ($this->Brand->save($this->request->data)) {
$this->Session->setFlash(__('Your post has been saved.'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('Unable to add your post.'));
}
}
}
答案 0 :(得分:2)
echo $this->Html->link('Add Brands Here'
, array(
'controller' => 'brands'
, 'action' => 'add'
, 4 // or whatever variable, maybe $computer['Computer']['id'] ?
)
);
......应该这样做。
它与您用于制作其他链接的片段完全相同。 echo $this->Html->link('P',array('action' => '../brands/table', $computer['Computer']['id']));
在最后制作那些数字“ids”时要记住的关键点是简单地在数组中添加一个非索引项。 CakePHP将最终解决问题。
当然,我还要警告你,从REST角度来看,最后添加一个“4”并不是真的有意义。也许你最好使用命名参数,比如这......
echo $this->Html->link('Add Brands Here'
, array(
'controller' => 'brands'
, 'action' => 'add'
, 'computer_id' => 4 // or whatever variable, maybe $computer['Computer']['id'] ?
)
);
...或查询字符串参数...
echo $this->Html->link('Add Brands Here'
, array(
'controller' => 'brands'
, 'action' => 'add'
, '?' => array('computer_id' => 4) // or whatever variable, maybe $computer['Computer']['id'] ?
)
);
进行更深入的阅读