Cakephp如何从表创建下拉列表

时间:2013-03-07 09:23:44

标签: cakephp

我是cakephp的新手,我正在努力创建一个非常简单的api,用户可以通过api“保留”车辆。

我有三种型号,视图和控制器,分别是车辆,客户和预订。我实现了大部分内容,但我只是坚持如何通过允许用户从下拉列表中选择来添加预订。

基本上我想要两个下拉列表,允许我选择客户ID /名称和车辆ID /名称。并将它们放入预订表。

这是我的预约控制器添加功能

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.');
            }
        }
        $customers = $this->Customers->find('list');
        $this->set(compact('customers'));
        $this->set('title_for_layout','Add Reservation');
    }

在底部,我使用了来自不同网站的一些代码,这些代码应该创建一个客户列表,但是我收到了一个错误。另外,由于客户内容属于不同的模式,我猜这是错误的方法。

那么如何在预订页面中添加客户下拉列表。

2 个答案:

答案 0 :(得分:4)

模型名称应该是单数,而不是复数,所以试试这个

$customers = $this->Customer->find('list');

但是,您可能忘记在控制器中加载“客户”模型。如果Reservation模型与Customer有关系(例如,预订belongs areTo Customer),最好通过模型树访问它;

$customers = $this->Reservation->Customer->find('list');
$this->set(compact('customers'));

要删除中间变量,请使用:

$this->set('customers', $this->Reservation->Customer->find('list'));

答案 1 :(得分:-1)

在控制器中创建列表数组

$role=$this->Modelname->find('list',array('fields'=>'id,name'));

在此ctp文件中创建下拉列表。

echo $this->Form->input('role', array('options' => $roles, 'default' => '--Select--'));