次のような状況があります。次のプロパティを持つモデル 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 コードはテストされておらず、概念を示しているだけです
ありがとう!