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 ネイティブ リスター/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 と clone region + render を使用して html をテンプレートの外側に移動することです。それとは別に、従来のリスターの使用は十分に効率的ではないように思われました。atk4 の皆さん、クエリ ツリー ビュー プラグインをフォローアップして、適切なバックエンドを作成してください。それはクールだろう。ありがとう、j

.

于 2011-12-31T13:08:48.963 に答える