我试图使用Yii PHP框架返回导航菜单,但我的控制器只输出数组中的第一项,这是我的代码。请注意,此模式不是使用传统的MVC,我要求数据的模型是在站点范围内显示的,而不是直接显示在其控制器 - >视图中。
模型 - 获取数据;
//output pages for getPagesMenuItems() in base controller
public function getAllPages(){
$criteria = new CDbCriteria();
$criteria->condition = "visible = 1";
return Pages::model()->findAll($criteria);
}
组件中的基本控制器
public $pagesMenuItems = array();
$this->pagesMenuItems = $this->getPagesMenuItems();
protected function getPagesMenuItems() {
//Non admin users - links to pages
if (Yii::app()->user->isGuest){
$rows = Pages::getAllPages();
foreach($rows as $row) {
return array(
//$row->id , $row->title , $row->guid , $row->visible
array('label' => $row->title, 'icon' => 'fa fa-times', 'url' => array('/admin/pages/view/id/' . $row->id)),
'---',
);
}
// return array();
}
else {}
}
这是main.php中的视图
$this->widget('booster.widgets.TbMenu', array(
'items' => $this->pagesMenuItems,
'id' => 'pagesNav'
));
我知道问题是在foreach循环中打包数组,因为我已经测试了模型的输出并且所有数据都是正确的
任何人都可以在我的控制器中看到我出错的地方吗?
由于
答案 0 :(得分:3)
更改getPagesMenuItems
功能如下:
protected function getPagesMenuItems() {
//Non admin users - links to pages
$data = array();
if (Yii::app()->user->isGuest){
$rows = Pages::getAllPages();
foreach($rows as $row) {
$data[] = array('label' => $row->title, 'icon' => 'fa fa-times', 'url' => array('/admin/pages/view/id/' . $row->id));
}
}
else {}
return $data;
}