CakePHP显示数据库

时间:2017-08-16 06:10:09

标签: php cakephp

背景

我有'医生'和'医院'表。它们通过'doctor_hospital'表链接(多对多)。

问题

在加入医生的同时,我想要多个复选框来选择医院。问题是我无法将医院'name'显示为选项,并将相应的'id'显示为数据库中的值。

我尝试了什么

我能做的最好(并没有得到任何错误)是这样的: enter image description here

代码

Controller.php这样

$hospitals = $this->Hcp->Hospitals->find('all', ['fields' => ['id', 'name']]);

add.ctp

<?php
   foreach ($hospitals as $hospital) {
   echo $this->Form->control('hospitals', ['type' => 'select',
                                           'multiple' => 'checkbox',
                                            $hospital->id => $hospital->name
                                          ]); 
            }
      ?>    

我想要什么

选择框时,显示“名称”,但将相应的“id”提交回控制器。

2 个答案:

答案 0 :(得分:0)

首先,打开您的HospitalsTable.php并检查您的displayField是否设置为“name”属性(如果您将模型烘焙应该是这样)。

接下来,在您的控制器中,使用“list”finder:

$hospitals = $this->Hcp->Hospitals->find("list");
$this->set(compact("hospitals"));

最后,在您的模板文件中:

echo $this->Form->control("hospitals._ids", ["type" => "select", "multiple" => "checkbox"]);

它应该产生你想要的东西。

更多信息:CakePHP 3.x Forms

答案 1 :(得分:0)

您应该使用“ form->复选框”而不是“ form-> control”

&