我在这里搜索了很多这个问题,但没有一个公认的答案对我有用。我想从另一个模型填充我视图中的选择下拉列表。由于某种原因,目前只显示最后一条记录。我有一个有效的解决方案,但代码很长很丑,我知道必须有更好的方法。在我的EventsController中,我有以下代码
$this->loadModel('Guests');
$this->set('Guests', $this->Guests->find('All',array('fields'=>array('first_name'))));
据我所知,这会创建一个名为Guests的变量,该变量是一个包含事件的guest虚拟机名字的数组。然后在我的Events / index.ctp中,我有以下代码来创建一个下拉列表。第一个例子有效,但很长很难看。接下来的三个例子都是我在这里找到的所有答案,但没有一个给出了理想的输出。示例2和3仅显示表中的最后一条记录,示例4仅显示任何内容。
<---- This works ---->
<select>
<?php foreach ($Guests as $Guests){ ?>
1 <option value = "<?php echo $Guests['first_name'];?>"> <?php echo $Guests['first_name'];?></option> <?php } ?>
</select>
<!--This does not work-->
<?= $this->Form->create('Guests'); ?>
2 <?= $this->Form->select('Guests', ['options' => $Guests['first_name']]); ?>
3 <?= $this->Form->input('Guests', array('options' => array('Guests' => $Guests['first_name']))); ?>
4 <?= $this->Form->input('Guests', array('options' => $Guests)); ?>
<?= $this->Form->end(); ?>
我可以看到变量是通过使用cakePHP工具栏查看变量从EventsController传递的。我已经包含了这个用于构造的截图。 Screenshot of variables here。由于我是CakePHP的新手,我希望得到有关问题所在位置的指导。先感谢您。
答案 0 :(得分:0)
请尝试使用find list
。
控制器:
$this->set('guests',
$this->Guests->find('list', array('fields' => array('first_name')))
);
查看:
echo $this->Form->create('Guests');
echo $this->Form->input(
'Guests.first_name',
array(
'options' => $guests
)
);
echo $this->Form->end();
http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-list
答案 1 :(得分:0)
>>> a = range(0,20,4)
>>> a
[0, 4, 8, 12, 16]
>>> b = range(0,20,6)
>>> c = sorted(a + b)
>>> b
[0, 6, 12, 18]
>>> c
[0, 0, 4, 6, 8, 12, 12, 16, 18]
>>> c = list(set(c))
>>> c
[0, 4, 6, 8, 12, 16, 18]
答案 2 :(得分:0)
下面是用户获取用户详细信息的值并将其传递到下拉菜单所需的代码。
$users = $this->MvacationServices->Users->find('list', ['keyField' => 'id', 'valueField' => 'username','limit' => 200]);