大家好我所面临的问题是将数组(从数据库中取出)分配给下拉列表。这是代码
控制器代码
$skill_rows = $this->Skill->find("all");
$this->set(compact("skill_rows"));
CTP代码
$skills = $skill_rows;
echo $this->Form->select("Seeker.skills",$skills,array("empty"=>"Select"));
数据库
id skill
1 PHP
2 CakePHP
我希望在下拉列表中仅显示技能列,但它显示完整的表格。
答案 0 :(得分:2)
使用$this->Skill->find("list");
返回可在下拉列表中使用的主键显示字段值数组。您可能需要将skill
指定为displayField
才能使其正常工作。
CakePHP 2
在CakePHP 2中,displayField
是模型的属性: -
class Skill extends AppModel {
public $displayField = 'skill';
}
或者,您可以在执行find()
时定义要在列表中返回的列: -
$this->Skill->find('all', [
'fields' => [
'Skill.id',
'Skill.skill'
]
]);
CakePHP 3
在CakePHP 3中,您可以在模型中定义displayField
: -
class SkillsTable extends Table
{
public function initialize(array $config)
{
$this->displayField('skill');
}
}
如果您想在CakePHP 3中的find()
查询中执行此操作,则需要定义keyField
和valueField
: -
$this->Skill->find('list', [
'keyField' => 'id',
'valueField' => 'skill'
]);