我是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
答案 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。