CodeIgniter: Erstellung und Verwendung eines Klassen-Arrays im Controller

softsolution

Grünschnabel
Hallo,

ich habe ein Problem mit der Nutzung eines Klassen-Arrays, vielleicht kann mir jemand helfen, das zu lösen.

Gemäß Anhang soll mein Code folgendermaßen funktionieren:

Nach erfolgreichem Login über die Funktion login() werden die Member des Klassen-Arrays $data mit ganz bestimmten Daten gefüllt, die dann der View myView1 übergeben werden. Der Anwender kann diese Daten entsprechend ändern und werden dann via Form-Submit an die Funktion getData() geschickt, die damit entsprechende Datensätze aus einer Datenbank sucht.

Danach werden myView1 mit den durch den Anwender zuvor eingegebenen Daten und myView2 mit den gefundenen Datensätzen angezeigt.

Der Anwender hat jetzt die Möglichkeit, Datensätze zu ändern. Das geschieht mit einem Button, der die Funktion chgData() im Controller aufruft. Nun bin ich davon ausgegangen, dass das Klassen-Array noch mit den Daten, die beim Aufruf der Funktion getData() vorhanden waren, gefüllt ist. Leider musste ich aber feststellen, dass das Array mit den Daten, die der Constructor ins Array geschrieben hat, befüllt ist.

Ich kann mir dieses Verhalten nur erklären, dass der Controller mit jedem Aufruf einer seiner Funktionen neu instanziert wird, sprich, die Klassenvariable immer wieder neu erzeugt wird. Ist das zutreffend ?

Wie kann ich eine „Supervariable“ erzeugen, die die Daten nicht vergisst ? Momentan fällt mir nur ein, diese Daten in das Session-Array zu schreiben. Vielleicht hat ja jemand noch eine smartere Idee.
 

Anhänge

  • Problem_Klassen-Array.pdf
    32,8 KB · Aufrufe: 6
Für mich stellen sich einige Fragen:
  1. Arbeitest du mit einer DB und wenn ja, werden die Änderungen dort korrekt übernommen?
  2. Sind die hier genannten Funktionen von dir erstellt oder sind sie Bestandteile des Framework?
  3. Hast du geschaut, ob es eine Funktion gibt, die $data aktualisiert?
 
Ja, ich arbeite mit einer mySQL-Datenbank. Die Daten aus dem Array $data dienen lediglich zur Einschränkung der zu suchenden Datensätze. Meine Annahme war, dass ich aus jeder Funktion des Controllers heraus, die Daten des Klassen-Arrays $data ändern kann und mir diese dann in anderen Funktionen der gleichen Klasse (User) zur Verfügung stehen würden. Die Funktionen sind von mir in der Klasse User erstellt worden.
 
Also ich arbeite eher mit cakephp. Dort sind die Nutzerdaten in einer Session gespeichert. Ansonsten muss ich mir alle Informationen aus einer DB holen. Nutzereingaben sind nach einem Reload ebenfalls wieder weg. Denke es wird bei dir nicht besser sein.

Mach dir nicht so viele Gedanken wegen der Abfragen. Mysql ist in der Regel schneller als PHP und daher kann es ratsamer sein mehrere Abfragen zu verwenden, als ein große? Array mit rumzuschleppen.
 
Zurück