在选择输入中对数据进行分组。 CakePHP的

时间:2015-08-27 23:14:23

标签: php mysql cakephp

首先,对不起我的英语。

我想在CakePHP中创建一个选择输入,它将对数据进行分组。

假设我在类别中有一些新闻,我想在选择输入中显示它们,它们按类别分组,如下所示:

==第一类==(不可点击)

第一类新闻

第一类的2条消息

第一类的3个新闻

==第二类==(不可点击)

第二类新闻

第二类新闻

第二类的3个新闻

==第三类==(不可点击)

[...]

控制器:

$this->set('news', $this->News->find('all',
array(
    'CONTAIN' => array('News' => array('Category'))
    'fields' => array('News.name', 'Category.name')
)));

查看:

echo $this->form->input('news', array('options' => $news));

我不知道如何在列表中创建如此分组。我尝试使用参数组,但没有任何结果。 目前在我看来,在将$news显示为$options并将其显示在视图中之前,这将是某种方式,但可能它不是最佳解决方案。

我想知道是否有可能在控制器的$news中创建适当的分组数组,或者在视图中显示之前保留修改数组。

2 个答案:

答案 0 :(得分:1)

您是否在模型中定义了类别和新闻之间的关系? 如果你有定义关系,你会得到像

这样的数据

[0] =>排列         (             [类别] =>排列                 (                     [id] => 1                     [Category_name] =>第一类

            )

        [News] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [Category_id] => 1
                        [news] => first news

                     )
                [1] => Array
                    (
                        [id] => 2
                        [Category_id] => 1
                        [news] => second news

                     )
            )
 )

所以你可以轻松循环。

答案 1 :(得分:0)

感谢您的回答!

事实证明我错过了视图中的showParents参数:

echo $this->Form->input('news', array('options'=>$news, 'showParents'=>true));

它帮助我将我的列表分组,现在我处于良好状态。