2009-06-15 2 views
0

Ich versuche, Ansichten für eine Reihe von 'Module' für einen Benutzer laden, der eine beliebige Anzahl von verfügbaren 'Module' ausgewählt hat. Ich kann den Namen der Module oder irgendeine Spalte von der Datenbank erhalten.Laden von 'Moduldaten' in Ansichten auf einer Benutzerbasis dynamisch von einem Controller mit CodeIgniter

load->view($name . '_view'); 

Ich kann nicht scheinen, einen Weg zu den Daten für die Ansicht auf dem ‚Modul‘ Namen obwohl basierend zu laden.

//Loads the rows (selected modules) I need for this user into an array 
$modules['modulearr'] = $this->module_model->getModuleUser(); 

    for($i = 0; $i < count($modules['modulearr']); $i++){ 

      //Get the variable from the array 
      $name = $modules['modulearr'][$i]->mod_name; 

      //The below works. 
      $this->load->view($name.'_view'); 

      //The below would not work. (this is the crux of my problem) 
      $data = $this->$name.'_model'->get(); 
      $this->load->view($name.'_view', $data); 
    } 

Es gibt auch ein Problem mit dem Laden die Modelle in der Steuerung auf der Grundlage der Tatsache, dass ich nicht $this->load->THIS_PART dynamisch ändern kann.

Ich bin neu in allem, also kann es ein Grundkonzept geben, das ich nicht begreife. Wenn Sie mir in die richtige Richtung zeigen könnten; Das wäre fantastisch. Ich könnte eine ganze Reihe von if-Aussagen machen, aber das scheint unordentlich zu sein. Sicherlich gibt es einen besseren Weg. Danke im Voraus!

Antwort

0

Es war eine Kapitalisierung Problem: Die Felder aus der Datenbank (in Array-Form)

waren manchmal in Großbuchstaben. Ich reparierte es mithilfe

$name = strtolower($name); 
$nameMod = $name.'_model'; 

dann

//it doesn't seem to like combinations of things where nameMod is below. 
$data[$name.'_result'] = $this->$nameMod->get() 
$this->load->view($name.'_view', $data); 

Ich weiß nicht, warum es ursprünglich in der Ansicht Ladeteil gearbeitet und nicht die Ladedaten durch Modellfunktion Teil aufrufen, aber es funktioniert jetzt. Ich verwende es für eine Hauptlandungsfunktion (nach der Anmeldung oder Anmeldung), die die Module auswählt und anzeigt, die von jedem Benutzer zu ihrem Profil hinzugefügt wurden. Ich gehe wahrscheinlich auf eine völlig gammige Art vor, aber ich lerne haufenweise Fehler, Danke für die Hilfe Antworten Sie mich auf jeden Fall auf die richtige Spur

0

vielleicht wollte man

$data = $this->$name.'_model'->get(); 

Sie die Saiten

+0

Ah, meine schlechte, ich habe das in der Frage verpasst, es erzeugt immer noch einen Parse-Fehler mit einer verketteten Zeichenfolge. – Allansideas

0

verketten vergessen, aber kann nicht scheinen, einen Weg zu die Daten für die Ansicht auf dem ‚Modul‘ Basis zu laden Name.

Der Modulname scheint von der Linie

$name = $modules['modulearr'][$i]->mod_name; 

, ob das funktioniert ...

$this->load->view($name.'_view'); 

vielleicht definiert werden Sie dies tun wollen?

$data = $name.'_model'->get(); 

anstelle von $ this-> name?

Wenn das nicht funktioniert (ich weiß nicht wirklich, was Sie auf haben zu gehen) versuchen $ this- Echo> Name und sicherstellen, dass der Ausgang Sinn ‚_model‘ angebracht macht

Verwandte Themen