Ho una situazione seguente. Ho un modello A con le seguenti proprietà: id int nome varchar (255) parent_id int (riferimenti stesso modello A).Rendering albero ricorsivo con Agile Toolkit
Ora, ho bisogno di rendere Tree View usando quel ModelA. Certo, potrei semplicemente caricare tutti i dati, ordinarli correttamente da parent_id e "renderlo" usando il tradizionale stick-sticking. per esempio.
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));
}
}
ora, vorrei invece desidera utilizzare atk4 nativo Lister/smlite modello parser per lo scopo. ma, se provi a farlo, ti ritroverai con un cattivo lister, dove nella riga del formato, comunque, proverai a sostituire il tag specifico con l'output di un altro lister che, in effetti, dovresti distruggere per annullare gli overflow della memoria di runtime .
qualche suggerimento?
p.s. codice sopra non è testato, mostra solo il concetto
grazie!
va bene, dopo aver trascorso qualche tempo circa le possibili opzioni, ho scoperto che più facile in questo caso particolare è stato quello di utilizzare sopra citato esempio. l'unico modo per renderlo più nativo sarebbe utilizzare un modello esterno per i nodi e utilizzare la regione di smite e clone + render per spostare html all'esterno del modello. a parte questo, l'uso del lister tradizionale non sembrava abbastanza efficiente. quindi, ragazzi atk4, segui il plug-in di visualizzazione dell'albero delle query e crea il backend appropriato! Sarebbe fico. grazie, j. – jancha
Si prega di aggiungere soluzione come risposta qui sotto e accettarlo. Questo segnerà la tua domanda come risolta. Grazie! – hakre
Non accetterò ciò che ho sopra, perché non è una soluzione. Quando c'è una soluzione integrata adeguata, aggiornerò questa domanda con un aggiornamento appropriato. Finora, si può presumere che non ci sia una soluzione integrata per il problema. – jancha