9
votes

Comment charger l'assistant du modèle dans le codeigniter?

Je veux charger de l'aide dans un modèle. Comment faire cela? Essayé d'utiliser: xxx

mais obtient toujours une erreur

Erreur fatale: appelez à une fonction de fonction membre () sur un non-objet


0 commentaires

4 Réponses :


-3
votes
$this->load->helper('helpername')

2 commentaires

La société $ ceci fait référence à l'instance d'application, qui ne peut être accessible de manière fiable de l'intérieur d'un modèle. MWM a-t-il correctement, en attribuant (BYREF) une instance de l'application CI et d'y accéder en utilisant $ CI-> Helper ("FOO").


Les aides ne sont disponibles que si vous n'avez que l'objet CI chargé. Voir la réponse de MWM.



41
votes

gsto a répondu $ ceci-> Chargement-> Helper ('HelperName') CODE> Mais si vous êtes dans la méthode de modèle, $ CU code> fait simplement référence à ce modèle (classe ) exemple et non à CI global. Cela ne fonctionnera pas!

Au lieu de cela, vous devez charger le GLOBAL CI, puis chargez l'aide: P>

// PHP 4
// $ci =& get_instance();
// PHP 5    
$ci = get_instance();
$ci->load->helper('text');


1 commentaires

C'est correct, mais il est recommandé d'attribuer par référence comme: $ CI = & get_instance (); Pour vous assurer que vous utilisez l'objet Coundigniter d'origine au lieu de la copier. Voir codeigniter.com/user_guide/general/ancillary_classes.html (bas de la page) .



-3
votes

Je pense que CI ne pas vérifier la duplication desiliaire ... Les herlpeurs CI sont des fichiers de procédure, vous pouvez inclure votre assistant deux fois si votre contrôleur a la même aide chargée que votre modèle (qui est chargé dans ce contrôleur). Peut-être faire une bibliothèque à la place ...

Je peux voir que je reçois des votes négatifs w / o Tout commentaire ... en vérifiant la classe Loader à partir de Core CI U, la méthode des aides ne vérifie pas la vérification si l'assistant a été chargée auparavant (il n'est pas inclus dans le tableau IS_Loaded () Comme la plupart des classes chargées par la classe de chargement de la classe d'usine) ... Je ne recommande pas de toute façon à charger des aides à charger des modèles et des contrôleurs ... pour EX I a fait une aide à la sortie de codage de sortie que j'utilise dans les contrôleurs (avant que je ne passe pas de données sur les données. vue) . Ce serait très mauvais si je change l'état de vue deux fois ...


0 commentaires

0
votes

Vous n'avez pas besoin de charger l'assistant dans un modèle.Juste charge de charge dans un contrôleur et utilisez une fonction dans un modèle ainsi que nous utilisons normalement une fonction d'assistance dans un contrôleur


2 commentaires

Vous devez le rendre plus clair en utilisant exemple de code


Désolé, mais ce n'est pas tout à fait correct. Parfois, des aides sont nécessaires dans les méthodes modèles de désinfection, etc.