2013-03-09 3 views
1

У меня есть простой api, который позволяет клиентам заказывать транспортные средства. В моем контроллере резервирования у меня есть функция, которая заключается в добавлении резервирования. Вот код:Выпадающий ящик CakePHP от связанной модели

Контроллер

function add() { 
     if($this->request->is('post')) { 
      if($this->Reservation->save($this->data)) { 
       $this->Session->setFlash('The Reservation was successfully added!'); 
       $this->redirect(array('action'=>'index')); 
      } else { 
       $this->Session->setFlash('The Reservation was not added.'); 
      } 
     } 
     $this->set('title_for_layout','Add Reservation'); 
    } 

Вот что я имею в мой взгляд надстройкой для резервирования.

Посмотреть

<?php 
echo $this->Form->create('Reservation', array('action'=>'add')); 
echo $this->Form->input('customer_id', array('type' => 'text')); 
echo $this->Form->input('vehicle_id', array('type' => 'text')); 
echo $this->Form->input('date'); 
echo $this->Form->end('Add Reservation'); 
?> 

Но поскольку я добавляю новую оговорку и я хочу выпадающий список для ид транспортных средств и один для идентификаторов клиентов, как я могу это сделать?

Я думаю, что я связал модели, помещая это в клиентов и транспортных средств моделей:

var $hasMany = array('Reservation' => array('className' => 'Reservation')); 

Может кто-нибудь мне точку в правильном направлении, так что выпадающий список появится список транспортных средств и клиента Идентификаторы на странице резервирования.

ответ

3

В надстройке функции в контроллере, используйте

$vehicle = $this->Reservation->Vehicle->find('list', array('fields' =>array('Vehicle.id','Vehicle.name')));        
$this->set('vehicle', $vehicle); 

На ваш взгляд, использовать

<?php echo $this->Form->input('vehicle_id', array('type' => 'select', 
                'options' => $vehicle)); ?> 

Используйте ту же самую вещь для клиентов также, и вы получите список клиентов и транспортных средств в раскрывающемся списке.

+1

Было бы проще назвать переменную «транспортные средства». По соглашению выпадающее меню 'vehicle_id' будет автоматически заполнено этими значениями, не указывая опцию' options'. – Oldskool