CakePHP下拉列表显示所有表项和预选记录

时间:2013-05-15 13:25:55

标签: mysql cakephp cakephp-2.3

我是CakePHP的新手,正在寻找一些指导。

我已经设置了一个数据库,以及我之前构建的一个php应用程序,我正在寻找重新构建/工程师的蛋糕。

我正在看三个表:客户,工作和状态。我编写了模型/控制器/视图来编辑作业记录。它从客户和工作表中提取值(使用'belongsTo'关系),并且我在作业和工作表之间创建了HABTM关系。状态,以便我可以提取状态名称并在编辑视图中显示它。所以它的工作原理是系统将从jobs表中获取状态id,然后允许我根据status_id显示状态名称。

对于我的数据库表,我有:

customers
---------
id   |   first_name   |  Surname
 1          Joe            Blogs


jobs
-----------
id   | date       | status_id
 22   2013-08-01       1

statuses
------------
 id   |  description
  1      Quote Sent
  2      Invoice

jobs_statuses
-----------
 id    | job_id   | status_id
 1         22           1

因此,我可以在文本框中显示作业视图以显示“Quote Sent”,但我真正需要的是有一个下拉框,其中显示状态表中的所有状态描述,以及作业的当前状态预选。所以在这里,我们将有一个下拉列表,在作业22的编辑视图中预先选择“Quote Sent”,然后我希望能够从下拉列表中选择“已开票”并保存表单 - 然后将相应地更新数据库,所以当我再次打电话给工作22时,它会将状态显示为“已开票”。

显然,数据库中的状态和数据等比上面的更多。

我真的很难理解我是如何让这个工作的...... :(任何帮助都非常感激。

我正在使用带有mysql数据库的蛋糕2.3.4

1 个答案:

答案 0 :(得分:0)

你可以有这样的状态下拉(我假设你从作业控制器调用它)

$statuses = $this->Job->Status->find('list');
$this->set(compact('statuses'));

在视图中

echo $this->Form->create();
//etc
echo $this->Form->input('Status');

介意视图中的大写和控制器中的复数形式,因为它与HABTM的工作方式相同。在文档中,有一些关于此here的段落可以指导您(在到达“FormHelper :: inputs”之前几乎一直向下)。

这样,应该神奇地预先选择所选状态。如果下拉框显示ids,请务必更改状态模型的displayField