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);
}
我想知道,为什么这些功能不适用于模型文件(内部类)? 如果我在控制器中使用它们,它们工作正常,如果我将它们粘贴到模型(类)文件中,它们就会停止工作(好像它们变得不可见)。导致上述两个函数的最后一个函数。
答案 0 :(得分:0)
您正在调用getCats($model)
这将是一个全局函数。但它被定义为类函数/方法。称之为$this->getCats($model)
和$this->getTree($cats)
,它应该有效。