我有以下情况。我有一个具有以下属性的模型 A:id int name varchar(255) parent_id int(引用相同的模型 A)。
现在,我需要使用该 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 模板解析器。但是,如果您尝试这样做,那么您最终会得到令人讨厌的列表器,在格式行中,您无论如何都会尝试用其他列表器的输出替换特定标记,实际上您必须破坏以使运行时内存溢出无效.
有什么建议么?
上面的ps代码未经测试,仅显示概念
谢谢!