繁体   English   中英

在CakePHP 3中对选择列表(optgroup)进行分组

[英]Grouping a select list (optgroup) in CakePHP 3

我正在尝试在CakePHP 3中创建分组列表,以在表单的选择列表中创建分组列表。 我不确定我是否缺少某些东西,或者我是否期望Cake太多而应该自己做更多的事情。

我有一个名为Issues的控制器和一个名为RelatedIssues的自引用列。 每个Issue属于一个System ,这是我希望将这些问题分组的系统。

在我的IssuesTable.php

$this->belongsTo('RelatedIssues', [
    'className' => 'Issues',
    'foreignKey' => 'issue_id'
]);

$this->belongsTo('Systems', [
    'foreignKey' => 'system_id',
    'joinType' => 'INNER'
]);

...以及我的IssuesControlleredit方法中:

$relatedIssues = $this->Issues->RelatedIssues->find('list', [
    'groupField' => 'system_id'
]);

当我进入下拉列表时,按指定的项目按system_id分组,但是我无法弄清楚如何按System的title字段对它们进行分组。 这是否有可能,还是我必须编写一个漂亮的嵌套的foreach结构自己完成?

应该是(现在可以尝试):

$relatedIssues = $this->Issues->RelatedIssues->find('list', [
    'groupField' => 'system.title'
])->contain('Systems');

考虑以下几点,比较清楚:

$relatedIssues = $this->Issues->RelatedIssues->find('list', [
        'contain' => ['Systems'],           
        'order' => [ 'Systems.title' => 'ASC', 'RelatedIssues.title' => 'ASC'],         
        'groupField' => function($entity) {
            return $entity->system->title;              
        }
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM