0

フォームの渡された 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.'));
                }
            }
        }
4

1 に答える 1

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

最後にこれらの数値の「ID」を作成する際に覚えておくべき重要なポイントは、インデックスのない項目を配列に単純に追加することです。CakePHP はそれらを最後まで追加します。

もちろん、このように末尾に「4」を追加することは、REST の観点からはあまり意味がないことも警告しておく必要があります。このように、名前付きパラメーターを使用したほうがよいかもしれません...

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でさらに詳しく読んでください。

于 2013-08-01T02:59:43.463 に答える