codeigniter - à l'aide d'un helper dans le contrôleur ne fonctionne pas
J'ai besoin d'utiliser une fonction dans plusieurs contrôleurs.
J'ai donc bien à l'aide d'un helper personnalisé, mais il semble que je ne peux pas le faire fonctionner. (Il travaille dans la vue, mais j'en ai besoin dans le contrôleur)
Il me donne une Erreur Irrécupérable suivante:
Fatal error: Call to undefined method Développeurs::checkIfLoggedIn() dans
/application/controllers/developers.php sur la ligne 12
Est-il un choix judicieux pour utiliser une aide pour utiliser une fonction dans plusieurs contrôleurs, ou doit-je faire autrement.
Merci d'Avance,
Marque
EDIT:
Contrôleur de fichier:
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Developers extends CI_Controller
{
public function __construct()
{
parent::__construct()
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('login');
//helper function
checkIfLoggedIn($this->session->userdata('loggedIn'));
}
}
Helper fichier:
if (!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('checkIfLoggedIn'))
{
function checkIfLoggedIn($session_loggedIn)
{
$loggedIn = $session_loggedIn;
if($loggedIn == false)
{
redirect('login/');
}
}
}
}
J'ai eu le même problème et j'ai créé un contrôleur de base à cette fonction et étendu que dans chaque contrôleur parce que les aides sont pour les vues
Très bien, merci. Je pense que je vais le faire alors
Avez-vous auto chargé de l'aide? Ou dans le contrôleur, avant que vous souhaitez utiliser?
les aides ne sont pas seulement pour
Je suis désolé, je pensais que le système de Zend et CodeIgniter étaient les mêmes
Très bien, merci. Je pense que je vais le faire alors
Avez-vous auto chargé de l'aide? Ou dans le contrôleur, avant que vous souhaitez utiliser?
les aides ne sont pas seulement pour
views
vous pouvez l'utiliser dans les contrôleurs. Lire ici.Je suis désolé, je pensais que le système de Zend et CodeIgniter étaient les mêmes
OriginalL'auteur DijkeMark | 2012-08-15
Vous devez vous connecter pour publier un commentaire.
Dans votre contrôleur, vous l'utilisez dans le mauvais sens, ce n'est pas une méthode de contrôleur de sorte que vous ne pouvez pas utiliser
$this
l'appeler.Pour charger un helper vous pouvez utiliser
Donc, pour appeler une fonction d'assistance dans un contrôleur, vous ne devez pas utiliser
au lieu d'utiliser
Par exemple, si vous avez une fonction d'assistance dans un helper fichier nommé
myCustomHelper.php
comme suitalors vous pouvez le charger dans le contrôleur et l'appeler comme suit
mais il est préférable de charger les aides dans le constructeur va donc être disponibles à travers l'ensemble du script.
Mise à jour: Si votre assistant nom du fichier
login_helper.php
alors vous pouvez l'utiliser dans votre contrôleur comme suiten savoir plus.
non, vous ne devez pas appeler la fonction avec
$this
suffit d'appeler à l'aide le nom de la fonction, c'est à diremyFunctionName();
.Je suis désolé, c'est ce que je voulais dire. 🙂 Je tpyed avec, mais je voulais dire sans. Toutefois, elle ne peut toujours pas trouver ma fonction.
Ne vous chargez l'aide de fichiers à l'aide de
$this->load->helper('filenamewithoutExt')
?Oui, je l'ai fait, dans le constructeur. L'aide est situé dans applications/helpers. Tout ce que les gens disent, je n'ai correcte. C'est étrange, elle ne peut toujours pas trouver ma fonction
OriginalL'auteur The Alpha
Ok, je sais que cette question a été posée il y a 5 mois, mais peut-être que certaines personnes vont trouver cela utile. J'avais juste eu le même problème et a découvert que le nom de mes fonctions d'assistance a été un nom de fichier qui a déjà été utilisé par CodeIgniter.
Donc, si vous n'obtenez pas l'avertissement: "Impossible de charger le fichier demandé',
mais au lieu de cela obtenir de l'avertissement: 'Fatal error: Call to undefined function [function_name], vous êtes probablement en utilisant un nom de fichier qui existe déjà en natif.
OriginalL'auteur roelleor
Au lieu de créer une bibliothèque de classe et de définir votre fonction. Puis charger la bibliothèque dans le contrôleur et l'appel de la fonction de bibliothèque. Vous pouvez charger la bibliothèque de n'importe quel contrôleur et d'utiliser ses méthodes.
CI
CodeIgniter aides.OriginalL'auteur Muhammad Raheel
Sur un sujet connexe: la prudence lors de la mise de $this->load dans l' __constructeur: en PHP, vous devez ensuite appeler explicitement parent::__construct(); autrement, le constructeur parent n'est plus appelé, laissant $this->load indéfini. La solution ci-dessus n'est correcte, mais il est facile de négliger.
Si vous ne le faites pas, vous obtiendrez le message d'erreur que Mon::$charge n'existe pas et l'aide ne prendra pas en charge.
OriginalL'auteur P2000
Aides sont le moyen idéal pour déclarer des fonctions globales dans codeigniter et ce que vous faites est correct. Voici quelques points qui pourront vous aider.
Charge de tous les assistants, à travers une simple ligne au lieu de séparer les lignes.
Si tu veux faire mondial, à travers tous les fichiers de contrôleur, vous pouvez le mettre dans la autoload.php fichier situé dans le '
config/
' annuaire.Mise à jour le
$autoload['helper']
variable comme suit:Source: Comment créer & appel global des fonctions PHP dans CodeIgniter
OriginalL'auteur Aman Dhanda