首先,对不起我的英语。
我想在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
中创建适当的分组数组,或者在视图中显示之前保留修改数组。
答案 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));
它帮助我将我的列表分组,现在我处于良好状态。