6

我有以下情况。我有一个具有以下属性的模型 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代码未经测试,仅显示概念

谢谢!

4

2 回答 2

3

好的,正确的时间已经到来,并且已经创建了适当的附加组件。要使用它,请更新您的附加组件和 atk4,并按照本文了解如何操作。

http://www.ambienttech.lv/blog/2012-07-06/tree_view_in_agile_toolkit.html

于 2012-07-06T18:24:28.743 回答
0

根据 Jancha 的评论

好的,在花了一些时间查看可能的选项之后,我发现在这种特殊情况下最简单的方法是使用上述示例。使其更加原生的唯一方法是对节点使用外部模板,并使用 smite 和克隆区域 + 渲染将 html 移到模板之外。除此之外,使用传统的lister似乎效率不够。所以,atk4 伙计们,跟进查询树视图插件并创建适当的后端!它会很酷。谢谢,j

.

于 2011-12-31T13:08:48.963 回答