2013-08-01 3 views
0

Как сохранить переданный идентификатор моей формы в другой форме? например, у меня есть http://192.168.6.253/computers/brands/table/4, который отображает все записи от брендов, принадлежащих компьютерам с условием computer_id = 4. Теперь у меня есть add(), который направляет меня на http://192.168.6.253/computers/brands/add.

Моя проблема в том, что я хочу сохранить computer_id = 4, чтобы при добавлении нового бренда он сохранил его в Brand.computer_id в БД. Поэтому я хочу что-то вроде http://192.168.6.253/computers/brands/add/4.

Вот как я называю надстройку() на мой взглядCakePHP поддерживает идентификатор даже при изменении вида

echo $this->Html->link('Add Brands Here', array(
     'controller' => 'brands', 
     'action' => 'add')) 
); 

Вот как я называю мой настольный бренд также в мои компьютеры смотреть

echo $this->Html->link('P',array('action' => '../brands/table', $computer['Computer']['id'])); 

И мой бренд добавить() и таблицы() контроллер

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.')); 
       } 
      } 
     } 

ответ

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

Ключевым моментом, который следует помнить при создании этих числовых «идентификаторов» в конце, является просто добавить неиндексированный элемент в массив. 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'] ? 
    ) 
); 

... или строку запроса Params ...

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

+0

Я использовал echo '$ this-> Html-> link ('Добавить бренды здесь', массив ( 'controller' => 'brand', 'action' => 'add', $ brand ['Brand' ] ['computer_id'] ) ); '. но я всегда получаю ошибку Undefined index: Brand' :( – Ikong

+1

debug() ваши вещи. Вложенные массивы CakePHP могут быть немного причудливыми, но они согласуются с количеством вложенности в зависимости от типа выполняемого запроса. – starlocke

+0

http : //book.cakephp.org/2.0/en/development/debugging.html – starlocke

Смежные вопросы