11
votes

Modèle d'accès de la vue dans le codeigniter?

Quelqu'un peut-il me dire comment puis-je accéder à un modèle de la vue dans le codéidien?


0 commentaires

10 Réponses :


6
votes

Voir le fil:

Affichage Appeler un modèle

Au fait, pourquoi devez-vous accéder au modèle à partir de la vue , vous pouvez envoyer les données de modèle à la vue à partir du contrôleur aussi qui est l'approche habituelle et meilleure.

comme une bonne note, conservez votre logique de traitement hors de la vue, vous devez utiliser contrôleur à la place.


3 commentaires

Nothings Ici note qu'il y a du traitement en vue. En MVC, la vue a accès au modèle. Voir: phpwact.org/pattern/model_view_controller


Ok alors comment accéder à 3 tables à l'aide de la méthode du modèle de contrôleur? Je devais sélectionner des données à partir de 3 tables et toutes dépendent de la valeur générée à partir de la 1ère requête, y a-t-il d'autre manière, j'ai réussi à créer une jointure dans 2 tables, mais aucune idée dans 3 tables qui se joint, toute suggestion?


Lien brisé. Coundigniter a modifié leurs forums.



5
votes

$ ceci-> Charger-> Modèle () retourne absolument rien. Regardez-le: système / bibliothèques / loader.php .

Cela ne produira absolument rien: xxx

et cet exemple suivant vous donnera L'erreur fatale appelle à une fonction de membre quelque_func () sur un non-objet : xxx

Peu importe si cette fonction existe même si cette fonction existe même, $ Modèle n'est pas un objet.

La chose à faire est d'avoir une méthode dans votre modèle qui renvoie des données, puis appelez cette fonction et transmettez les résultats dans votre fichier de vue: < / p> xxx

ps: comment est la seule réponse que vous avez acceptée la mauvaise chose à faire?


2 commentaires

@ BSCHAEFFER - Je suis le modèle de chargement que après que je appelle la fonction. mais cela me donne une erreur "Appel à une fonction de membre AddPost () sur un non-objet"


Il y a un moyen de le faire, j'ai trouvé par accident, mais c'est un ensemble de sécurité à le faire, les modèles sont supposés accéder à l'accès à la base de données et à organiser les données, le contrôleur doit gérer tout type de logique de manipulation de données et est un Allez entre entre la vue et les modèles, cela aide à empêcher l'accès direct à vos données de pages publiques et à centraliser et à manipuler les données en diminuant le temps nécessaire pour déboguer



1
votes

Etant donné $ Modèle n'est pas un objet, vous pouvez appeler le modèle "Table" à l'aide de "::" Opérateur de résolution de la portée, qui peut appeler la fonction de la classe elle-même sans instance d'objet.

$this->load->model('table'); 
table::some_funct();


0 commentaires

0
votes

Hey. Vous pouvez accéder à partir de la vue pour modéliser le même mode que vous accédez sur son contrôleur. N'oubliez pas que l'accès à des modèles importait son contrôleur.


0 commentaires

18
votes

Chargez un modèle sur le contrôleur

$model_obj->some_method()


4 commentaires

Exactement ce que je cherchais. Fonctionne parfaitement!


Très belle réponse.


C'est ce que je cherchais exactement .. Il semble que des millions d'an ont été sauvés


Vous ne devriez pas appeler le modèle de la vue. C'est contre le modèle MVC. Vous devez garder la logique d'entreprise séparée de la vue.



0
votes

Dans l'UML d'origine, j'ai semblé pour l'architecture MVC, afficher les méthodes d'appels dans le modèle ..

http://www.as3dp.com/wp- Contenu / Uploads / 2010/02 / MVC_POPOPE_KRASNER.PNG

.. Mais dans la pratique avec les applications PHP, car il n'y a pas de persévérance à suivre les modifications de l'état des objets entre les demandes (ou au moins pas efficacement), je trouve qu'il est préférable de conserver tous les appels de méthode de modèle dans le contrôleur et de passer le résultat à voir si possible.


0 commentaires

-2
votes

Vous pouvez accéder essentiellement une méthode de la vue dans le codeigniter.

print_r ($mydata);


1 commentaires

Vous n'accédez pas au modèle de la vue. Vous l'accédez à partir du contrôleur et fournit la sortie à la vue. Ce n'est pas ce qui est demandé par l'auteur de la question.



5
votes

Vous pouvez utiliser le code suivant:

   $ci =&get_instance();
   $ci->load->model(your model);
   $ci->(your model)->(your function);     
   Note: You have to call your model in your controller.Its working fine


1 commentaires

Merci bro .. @ pritam chaudhari



1
votes

Dans les cas où vous souhaitez accéder à une fonction de modèle à partir d'une vue partagée, vous n'avez pas à charger le modèle requis dans chaque contrôleur qui appellera cette vue. Vous pouvez charger le modèle à l'intérieur de la vue elle-même à l'aide du code suivant: xxx

dans les anciennes versions de codeigniter Le code suivant utilisé pour fonctionner: < pré> xxx

mais lorsqu'il est testé sur CI 3.1.9, il jette l'erreur suivante Message: Propriété non définie: CI_LOADER :: $ MODERN_NAME_MODEL

NOTE: J'utilise cette technique dans des vues de modèle (barre latérale, menus ... etc.) qui N'est pas utilisé partout dans ma candidature, si vous souhaitez accéder à un modèle de n'importe où dans votre demande, il suffit de charger ce modèle globalement en le ajoutant au tableau AutoLoad dans Application / Config / AutoLoad.php


0 commentaires

0
votes

Vous pouvez ajouter le nom de votre modèle à CONFIG-> MODÈLE AutoLoad

$autoload['model'] = array('model_name');


0 commentaires