我有一个只显示表格行ID的下拉列表。 我想在下拉列表中向该用户显示该表中的多个值。
我是否需要在控制器中的变量中添加一个带有列名的数组或类似的东西?
编辑: 在函数add中我有这个变量
$addresses = $this->Users->Addresses->find('list', ['limit' => 200]);
在视图中
echo $this->Form->input('address_id', ['options' => $addresses]);
我只想在下拉列表中显示值address_id,city,street,zipcode。
答案 0 :(得分:5)
使用虚拟字段:
您可以在地址实体文件中
function _getFullName()
{
$ret = $this->city.' '.$this->street.' '.$this->zipcode;
return $ret;
}
然后在你的控制器中你可以做
$addresses = $this->Users->Addresses->find(
'list',
['limit' => 200, 'valueField' => 'full_name']
);
答案 1 :(得分:0)
Form::Select()
只需要一个数组来显示它的值。它使用索引来定义值以及要显示的数组的值。
您可以做的是从表中获取所需的列,然后使用concat()
从这两列中创建一个字符串,然后将其放入数组中。
或者,您可以查看接受数组的Table类中的displayField()
。这样做的缺点是当你使用$table->find('list');
时,你会得到Sevvlor;1
的某些内容,这可能不是你想要的。