我必须显示一个选择框,其中包含按一般流派分组的不同电影类型。
为此,我使用了CakePHP默认方法find('list',...)
。
我的电影类型数据库表是这样完成的:
|_id_|_name_________|_general_genre_|
| 1 | Action | Action |
| 2 | Martial arts | Action |
| .. | ............ | ............. |
问题是,如果该组具有与数据相同的名称(例如:" Action"),则数据不会显示为组名的好处。
所以我的选择框如下:
Select a genre
- Action
- Martial arts
- ...
我想要的是:
Select a genre
- Action
- Action
- Martial arts
- ...
当然,原因是,无法选择组项目。
提前致谢!
答案 0 :(得分:2)
好的,经过一些研究后,我最终得到了答案。
这是要添加到Html->input()
方法的属性。此属性为showParents
。
因此,如果您想创建一个包含组的选择框,并且在该组中包含与该组具有相同名称的项目,则必须执行以下操作:
选择包含以下列表的列表:
$options = $this->TableName->find('list', array(
'fields' => array('id', 'name', 'group_name')
));
显示选择输入:
$this->Html->input('InputId', array(
'type' => 'select',
'options' => $options,
'showParents' => true
));
希望这可以提供帮助;)
答案 1 :(得分:1)
这是预期的行为。生成表单元素时使用showParents
选项。 API甚至有一个例子。对于你未能检查的这种情况:)
答案 2 :(得分:0)
您可以通过设置find('list')
选项覆盖$options['fields']
返回的默认字段(主键和displayField)。如果需要,这些可以是两个以上的字段。这应该接近你所需要的:
$this->Genre->find('list', array(
'fields' => array('id', 'name', 'general_genre')
));
这将返回如下数组:
'Action' =>
1 => 'Action'
2 => 'Martial arts'
您应该可以在下拉列表中使用它。