2011-05-22 12 views
0

Comment envoyer un tableau du fichier modèle au fichier view?CodeIgniter: Envoi d'un tableau du modèle au visualiseur

Contexte: J'ai une forme où le nom peut être mis en (View-fichier). Ensuite, je passe cette information sur mon fichier de contrôleur, qui vérifie s'il y a des informations ajoutées au formulaire. Si aucun message d'erreur n'apparaît et indique à l'utilisateur que des noms doivent être ajoutés. Si des noms ont été ajoutés au formulaire, le contrôleur transmet ensuite l'information au modèle qui vérifie la base de données si l'un des noms existe déjà dans la base de données. Si certains ou tous les noms existent déjà dans la base de données, ils sont transmis à un tableau . Si le nom n'est pas ajouté à la base de données, le fichier modèle les ajoute à la base de données.

Je veux obtenir le tableau des noms qui sont déjà dans la base de données et de sortie ces derniers pour l'utilisateur. C'est pourquoi j'ai besoin du tableau avec les noms déjà dans la base de données.

User add: 
Mark 
Sophie 
Dan 
Josh 

Already in database: 
Mark 
Dan 

Array then contains (should be output to the user): 
Mark 
Dan 

Une solution que je pensais était possible était d'ajouter une déclaration de retour à la fonction dans le modèle fichier. cela ne fonctionnera pas

$data['nameArray'] = $this->model_name->add_name(); 

Mais, parce que si l'utilisateur a manqué d'ajouter des informations à la forme l'instruction else sera affiché et les données de $ [ « tabNoms »] ne sera pas: Et retrive le tableau comme celui-ci être défini. Ce qui conduit au message d'erreur "Undefined variable", en essayant de le sortir dans le view-file.

Répondre

1

avant d'ajouter le résultat du modèle à la vérification du tableau si le résultat est vide, si vide ajouter une valeur comme $data['nameArray'] = "N/A" autre si elle n'est pas vide $data['nameArray'] = $this->model_name->add_name(); alors dans votre chèque de vue si $ tabNoms est un tableau et procéder en utilisant ce tableau d'autre affiche la chaîne N/A. C'est ainsi im faire

si l'utilisateur a manqué d'ajouter des informations à la forme si vos utilisateurs doivent saisir cette valeur, vous devez les forcer à le faire, vérifiez la bibliothèque Form_Validation pour CodeIgniter.

2

Il n'y a pas du mal à passer des tableaux à partir d'un modèle à un contrôleur ou une vue en CodeIgniter. Passez-les comme vous le feriez pour n'importe quelle autre variable.

Votre idée semble devoir fonctionner. Si vous voulez éviter l'erreur « variable non définie » vous pouvez utiliser isset() dans votre vue comme ceci:

<?php if isset($nameArray) echo $nameArray; ?> 

Ce qui serait l'écho qu'un tableau de nom si elle avait été retournée par votre modèle.

Sinon, vous pouvez faire comme atno dit et ajoutez un contrôle dans le contrôleur lui-même:

$data['nameArray'] = $this->model_name->add_name(); 
if (! $data['nameArray']) $data['nameArray'] = array(); 

Il existe d'autres méthodes pour le faire ainsi, selon la valeur la mieux dépend de votre situation et vos préférences.

+0

Mais comment transmettre la variable? En passant du contrôleur au visualiseur, j'utilise ceci: \t \t $ data ['text'] = "Detta är testtext.« \t \t \t \t \t \t $ this-> load-> vue ('tête', page_info de $); \t \t $ this-> load-> vue ('ma_vue', $ data); Mais Je ne veux pas charger une vue de mon modèle, je veux juste passer une variable définie dans une instruction if Si elle est correcte, passez la variable à afficher – Fredrik

+1

@Fredrik - Je ne comprends pas - En général, vous devez accéder à la méthode du modèle à partir du contrôleur, puis passer le résultat à la vue en utilisant le tableau de données $ De ce que vous décrivez, cela semble être ce que vous faites Ce que je décris n'exige pas de charger un modèle depuis la vue , mais en l'appelant du contrôleur. – jisaacstone

Questions connexes