J'ai ce contrôleur d'erreur dans My Condicateur 2.1.0 Application:
Fatal error: Class 'Main' not found in /var/www/MYApplicationName/application/controllers/error.php on line 22
4 Réponses :
Les fonctions d'appel d'un autre contrôleur pausent MVC et vous met dans le domaine HMVC. p>
Veuillez consulter Ce fil , ainsi que Extensions modulaires (HMVC) Plugin Si vous avez vraiment besoin de le faire. P>
Bon sujet, merci. Je pense avoir une réponse à ma vieille question à cette question: codereview.stackexchange.com/questions/11277/...
Pourquoi ne créez-vous pas mon_controller qui étend le CI_Controller où vous mettez votre code réutilisable? p>
En fait, vous vous trompez. Votre code «index» ne fonctionne pas non plus. P>
Je viens de coller tout votre code ci-dessus dans une version propre de CI 2.1.2 et la fonction Index renvoie également la même erreur. P>
Alors, peut-être que votre ordinateur a quelque chose de caché ou que vous avez un autre code ailleurs qui vous fait penser que cela fonctionne. Mais cela ne fonctionne pas. P>
Quoi qu'il en soit - la question réelle em> est pourquoi essayez-vous d'appeler un contrôleur d'un autre contrôleur? Ce n'est pas une bonne approche MVC. Votre fonction "_menu ()" doit être située dans un bibliothèque - c'est là qu'il appartient . P>
ou mettre le code _menu () dans "my_controller" et que les deux contrôleurs étendent My_Controller a >. P>
ou mettre le code _menu () dans un Helper . P>
Fondamentalement, il y a trois meilleurs moyens pour que vous puissiez aborder cela. P>
Meilleure réponse jusqu'à présent, je le vérifie, peut-être que la mise en cache était la raison ... aussi merci pour les suggestions, j'ai déjà mis le menu dans un modèle.
Basé sur la réponse de @ Theshiftexchange, j'ai pu retrouver qu'un réglage de route a causé ce comportement. Mon donc, lorsque j'ai apporté une demande à L'autre méthode (la prime va à @theshiftexchange, car sa réponse était la plus précise et m'a fourni la meilleure information pour suivre le problème. Merci! config / routtes.php code> ressemble à ceci:
www.example.com/nonexistent-url Code> Ceci est servi par le contrôleur
principal code>, puis CI remarqua qu'il n'y a pas de méthode comme celle-ci, il a donc couru
erreur / index index> aussi, mais le
principal Code> Le contrôleur a déjà été chargé d'ici là. P>
Facebook code> a été redirigé à partir d'une méthode existante de
Main code> uniquement, par exemple
Galerie code>, de cette façon, c'est comme si je suis allé à l'URL
www.example.com/error/facebook code>, donc le contrôleur
principal code> n'est pas chargé, car seulement
erreur / facebook code> est demandé. Si j'appelle
www.example.com/error/index code> il fonctionne de la même manière, car dans ce cas, le contrôleur
principal code> n'est pas chargé, seulement l'erreur
Code>. P>
L'une de mes redirections n'a jamais été atteinte, ce que j'ai appris appelait la page d'erreur / index.) P> p>
Le fichier MainController est-il inclus? L'erreur signifie qu'il ne peut pas trouver la classe, souvent parce que le fichier de classe n'est pas inclus dans le script.
C'est toute la classe d'erreur. Aucun code supplémentaire n'est dans la méthode Index (). Comment cela est-il possible si ces deux sont les mêmes mais on ne peut pas appeler ce que l'autre peut? Ou est une méthode index () une spéciale? et oui, je sais comprendre quelque chose, mais ma question est de savoir comment est-il possible que l'index () fonctionne ???
Le Codedigniter Place
Application / Contrôleurs / Contrôleurs / Main.PHP CODE>
C'est vraiment un comportement intriguant, il ne devrait y avoir aucune différence pour le chargeur de classe CI (mais cela est apparemment). Puis-je suggérer l'inverse: mettre en œuvre votre menu
code> comme aide d'affichage?
HMM: D Vous voulez dire toute la fonction ou comment? Je demandais même cela une fois ici: codereview.stackexchange.com/questions/11277/...
Devez-vous appeler le constructeur de parents à Main?