我有以下情况。我有一个具有以下属性的模型A: id int name varchar(255) parent_id int(引用相同的模型A)。
现在,我需要使用ModelA渲染树视图。当然,我可以加载所有数据,通过parent_id正确排序,并使用传统的字符串粘贴“渲染”。 e.g。
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 native lister / smlite模板解析器来实现此目的。但是,如果你试图这样做,那么你最终会遇到讨厌的lister,在格式行中,你无论如何都会尝试用其他lister的输出替换特定标记,实际上你必须破坏运行时内存溢出
有什么建议吗?
P.S。 以上代码未经过测试,只显示概念
谢谢!
答案 0 :(得分:3)
好的,正确的时间到了,并且已经创建了适当的附加组件。要使用它,请将您的添加内容和atk4更新,并按照本文了解如何操作。
http://www.ambienttech.lv/blog/2012-07-06/tree_view_in_agile_toolkit.html
答案 1 :(得分:0)
根据Jancha的评论
好吧,在花了一些时间查看可能的选项之后,我发现了 在这个特殊情况下最简单的方法就是使用上面提到的例子。 使其更加原生的唯一方法是使用外部模板 节点并使用smite和clone region + render将html移到t o之外 模板。除此之外,似乎没有使用传统的列表 足够高效。所以,atk4家伙,跟进查询树视图 插件并创建适当的后端!它会很酷。感谢,J