У меня следующая ситуация. У меня есть модель A со следующими свойствами:
id int
Имя Варчар (255)
parent_id int (ссылается на ту же модель A).
Теперь мне нужно отобразить Tree View, используя эту ModelA. Конечно, я мог бы просто загрузить все данные, правильно отсортировать их по parent_id и «отобразить», используя традиционное закрепление строк. например,
class Model_A extends Model_Table {
...
function render_branch($nodes, $parent){
if (!isset($nodes[$parent])){
return null;
}
$out = "<ul>";
foreach ($nodes[$parent] as $node){
$out .= "<li>" . $node["name"];
$out .= $this->render_branch($nodes, $node["id"]);
$out .= "</li>";
}
return $out;
}
function init(){
parent::init();
$nodes = array(); // preload from db and arrange so that key = parent and content is array of childs
$this->template->set("tree", $this->render_branch($nodes, 0));
}
}
Теперь я вместо этого хотел бы использовать для этой цели собственный анализатор шаблонов atk4 lister / smlite. но, если вы попытаетесь это сделать, то в итоге вы получите неприятный список, в котором в строке формата вы все равно попытаетесь заменить определенный тег выводом из другого списка, который на самом деле вам придется уничтожить, чтобы избежать переполнения памяти во время выполнения. .
есть предложения?
p.s.
код выше не тестируется, просто показывает концепцию
спасибо!