2009-06-15 4 views
0

Je suis en train de charger des vues pour un ensemble de « modules » pour un utilisateur qui a sélectionné un certain nombre de « modules » disponibles. Je peux obtenir le nom des modules, ou n'importe quelle colonne de la base de données.Chargement 'modules de données dans des vues sur une base utilisateur par Dynamiquement d'un contrôleur en utilisant CodeIgniter

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

Je n'arrive pas à trouver un moyen de charger les données pour la vue basée sur le nom 'module'.

//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); 
    } 

Il y a aussi un problème avec le chargement des modèles dans le contrôleur basé sur le fait que je ne peux pas changer $this->load->THIS_PART dynamiquement. Je suis nouveau à tout, donc il peut y avoir un concept de base que je ne comprends pas. Si vous pouviez me diriger dans la bonne direction; ce serait génial. Je pourrais faire tout un tas de déclarations if, mais cela semble désordonné. Sûrement il y a un meilleur moyen. Merci d'avance!

Répondre

0

Il était une capitalisation question: Les champs de la base de données (sous forme de tableau)

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

étaient parfois en majuscules. Je l'ai fixé en utilisant

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

puis

//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); 

Je ne sais pas pourquoi il l'origine a travaillé dans la partie chargement de la vue et non pas les données de chargement en appelant une partie de la fonction de modèle, mais il le fait maintenant. Je l'utilise pour une fonction de page d'atterrissage principale (après inscription ou connexion) qui sélectionne et affiche les modules ajoutés par chaque utilisateur à son profil, j'y vais probablement d'une manière complètement gammy, mais j'apprends des tas en faisant erreurs, Merci pour l'aide répondeurs vous m'avez définitivement mis sur la bonne voie

0

peut-être vous vouliez

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

vous avez oublié de concaténer les chaînes

+0

Ah, mon mauvais, j'ai raté cela dans la question, il produit toujours une erreur d'analyse avec une chaîne concaténée. – Allansideas

0

mais ne peut pas sembler trouver un moyen de charger les données pour la vue sur la base du « module » prénom.

Le nom du module semble être défini de la ligne

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

si cela fonctionne ...

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

peut-être que vous voulez faire cela?

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

au lieu de $ this-> name?

Si cela ne (je ne sais pas vraiment ce que vous avez en cours) ne pas fonctionner essayer écho $ this-> nom et en vous assurant la sortie logique attachée à « _model »

Questions connexes