CakePHP即使在更改视图时也会维护ID

时间:2013-08-01 02:03:55

标签: php html cakephp

如何将表单的传递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.'));
                }
            }
        }

1 个答案:

答案 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'] ?
    )
);

http://book.cakephp.org/2.0/en/development/routing.html

进行更深入的阅读