public function getCats($model){
$levels = array();
$tree = array();
$cur = array();
foreach($model as $rows){
$cur = &$levels[$rows['id']];
$cur['parent_id'] = $rows['parent_id'];
$cur['title'] = $rows['title'];
if($rows['parent_id'] == 0){
$tree[$rows['id']] = &$cur;
}
else{
$levels[$rows['parent_id']]['children'][$rows['id']] = &$cur;
}
}
return $tree;
}
public function getTree($arr){
echo '<ul>';
foreach($arr as $k=>$v){
echo '<li>';
echo '<a href="/page/index/id/'.$k.'">'.$v['title'].'</a>';
if(!empty($v['children'])){
echo getTree($v['children']);
}
echo '</li>';
}
echo '</ul>';
}
public function allCats($pos) {
$model = Category::model()->findallBySql('SELECT id, parent_id, title FROM {{category}} WHERE position="'.$pos.'"');
$cats = getCats($model);
echo getTree($cats);
}
我想知道,为什么这些函数不工作在模型文件(类内部)?如果我在控制器中使用它们,它们工作得很好,如果我将它们粘贴在模型(类)文件中,它们就会停止工作(就好像它们变得不可见一样)。最后一个函数导致上述两个函数
您正在调用getCats($model)
,这将是一个全局函数。但它被定义为类函数/方法。将其命名为$this->getCats($model)
和$this->getTree($cats)
,应该可以工作。