Hallo erstmal, ich bin momentan dabei ein Backend-Plugin zu entwickeln und habe bis jetzt auch keine Probleme gehabt. Es geht um folgendes ich bin dabei einen TreePanel zu erstellen funktioniert soweit auch alles sauber und der Tree wird gezeichnet und enthält auch den angegeben Root. var storeForTreeA = Ext.create('Ext.data.TreeStore',{ proxy: { type: 'ajax', url: '{url action=getShopCategories}' }, root:{ text: 'MyRoot', expanded: true }, sorters: { property: 'text', direction: 'ASC' }, autoLoad: true, method: 'POST' }); var treeA = Ext.create('Ext.tree.Panel',{ title: 'Tree One (drag from here)', store: storeForTreeA, width: 500, height: 200, viewConfig: { plugins: { ptype: 'treeviewdragdrop' } }, style: 'margin: 50px' });
Bei dem Call auf die getShopCategoriesAction sieht die Antwort mit json_encode wie folgt aus: []{"child":[{"text":"United Kingdom"}]}
und normal sollte er so aussehen : {"child":[{"text":"United Kingdom"}]}
PHP-Part: public function getShopCategoriesAction() { $arr = array(); $arr[] = array( "text" =\> "United Kingdom" ); echo json\_encode(array("child" =\> $arr)); }
Das ist nur ein dummy Array aber ich bekomme es einfach nicht hin das mir der Tree nun das Element auflistet. Auch wie folgt funktioniert es nicht: $this-\>View()-\>assign(array("MyRoot" =\>$arr));
Dann hat er zwar nicht die leeren „“ aber er fügt mir nichts hinzu. Normal müsste der aufbau für die Childs wie folgt aussehen: [{"text": "TestChild"}]
Aber egal was ich versuche die leeren „“ bleiben. Vielleicht hat in diesem Bereich ja schon jemand erfahrungen oder kann mir sagen warum die leeren „“ nicht verschwinden. Vielen Dank Beste Grüße kurzi
Hi, mit dem folgenden Code kriege ich die von dir gewünschte Ausgabe: $arr = array( "text" =\> "United Kingdom" ); echo json\_encode(array("child" =\> array($arr)));
Ausgabe: {"child":[{"text":"United Kingdom"}]}
Ich hoffe, das hilft dir weiter.
hi, erstmal danke für die Hilfe, hat aber leider nichts gebracht. Anscheinend tritt das Problem nur auf wenn ich mit in einer Action json_encode verwende. Hab es jetzt gelöst in dem ich eine andere PHP-Datei aufrufe und dort dann per echo mir das JSON-Object zurückgeben lasse. Aber fragt mich nicht warum das in dem Controller nicht funktioniert. Evtl liegt das an dem Aufbau wegen dem MVC Model da es sich bei dem Treebaum um kein Data.Model handelt. Wie kann ich denn das Thema als gelöst markieren :D:D?? Viele Grüße kurzi
Eigentlich musst du gar nichts selbst encoden, es gibt einen ExtJs Controller, von dem du erben solltest. Der encodiert dann alles korrekt, was du dem view assingst.