0

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

我已经建立了一个数据库,并且我已经构建了一个以前的 php 应用程序,我希望在蛋糕中重新构建/工程。

我正在查看三个表:客户、工作和状态。我已经编写了用于编辑作业记录的模型/控制器/视图。它从客户和工作表中提取值(使用“belongsTo”关系),并且我在工作和状态之间创建了一个 HABTM 关系,以便我可以提取状态名称并将其显示在编辑视图中。所以它的工作原理是系统将从作业表中获取状态 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

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

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

我真的很难理解我是如何让它工作的...... :-( 非常感谢任何帮助。

我正在使用 cake 2.3.4 和 mysql 数据库

4

1 回答 1

0

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

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

并且在视图中

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

注意视图中的大写字母和控制器中的复数形式,因为这就是它与 HABTM 一起使用的方式。在文档中,这里有几段可以指导您(几乎在到达“FormHelper::inputs”之前一直向下)。

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

于 2013-05-15T14:04:26.790 回答