CakePHP下拉框来自相关模型

时间:2013-03-09 13:52:30

标签: cakephp

我有一个简单的api,允许客户预订车辆。在我的预订控制器中,我有一个添加预订的功能。这是代码:

控制器

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

但是因为我正在添加一个新的预订,我想要一个车辆ID的下拉框和一个客户ID的下拉框我怎么能这样做?

我认为我已经将这些模型与客户和车辆模型联系起来了:

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

任何人都可以指出我正确的方向,以便在添加预订页面上显示一个包含车辆和客户ID列表的下拉框。

1 个答案:

答案 0 :(得分: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)); ?>

也为客户使用相同的东西,您将获得下拉列表中的客户和车辆列表。