Mon par défaut_Controller dans la configuration des itinéraires est défini comme "home.php". p>
J'ai un serveur sous-répertoire pour mes contrôleurs, permet de l'appeler "dossier". Donc, si je visitez http://mysite.com/folder/ , le dossier du contrôleur par défaut "dossier / home.php "devrait être appelé droit? P>
Cependant, pour une raison quelconque, cela ne fonctionne pas, je reçois un 404. Visiter http://mysite.com/ dossier / home ou http://mysite.com/folder/home/index fonctionne comme prévu. En plus de cela, le contrôleur par défaut fonctionne dans le répertoire racine ( http://mysite.com charges home.php). p>
Des idées, quelqu'un d'autre a-t-il vécu cela? Je ne peux pas avoir la tête autour de moi - cela semblerait être un problème de CI, mais je ne trouve personne d'autre ayant le même problème. P>
La documentation, de la façon dont je comprends au moins, suggère que cela devrait fonctionner correctement: http://codeigniter.com/user_guide/general/controlers.htm#subfolders p>
Définition du contrôleur par défaut sur "dossier / home.php" signifie que http://mysite.com/folder/ < / a> fonctionne bien comme prévu. Sauf que je veux que le contrôleur par défaut soit juste être "home.php" - que ce soit dans la racine ou dans un répertoire sous-répertoire, home.php dans ce répertoire doit être chargé, car la documentation suggère. P>
acclamations p>
9 Réponses :
La route par défaut est utilisée pour indiquer à CI, quelle classe de contrôleur doit être chargée si l'URI ne contient aucune donnée.
donc, lorsque je charge p> Le meilleur contrôleur sera chargé. < / p> aussi lorsque je charge p> ou p> Le meilleur contrôleur sera chargé. p> p> p>
Avez-vous couru cela avec succès auparavant?
Pour chaque sous-dossier de votre dossier de contrôleurs, vous devez spécifier un contrôleur par défaut dans par exemple: pour définir le contrôleur par défaut pour vous ce qui signifie routes.php code>. L'itinéraire
$ ['default_controller'] code> ne fonctionnera pas pour les sous-dossiers.
dossier code> Sous-dossier sur < code> home code> Ajoutez les éléments suivants à votre
/application/config/routes.php code> Fichier: p>
http : //mysite.com/folder/ code> est identique à celui
http://mysite.com/folder/home code> comme URL. p> p>
J'ai été confronté à la situation de vouloir mon défaut_controller pour accéder à un contrôleur dans un sous-dossier. J'ai pu l'obtenir en créant un autre contrôleur en dehors du sous-dossier et en apportant la valeur par défaut. Le nouveau contrôleur a simplement fait un redirection ('/ dossier / home') code> dans l'index
() code>
@Yassersouri, j'ai ajouté votre code dans routtes.php mais ça ne marche pas. Je reçois un objet d'erreur non trouvé.
@ user9437856 Ceci est très ancien, la nouvelle version de CodeDIGITER aurait peut-être changé.
Si vous souhaitez rester flexible, vous devez tout transmettre après le dossier de départ (dans Application / config / config.php CODE>):
$route['home'] = "home/whatever";
$route['home/(:any)'] = "home/whatever/$1";
Vous pouvez étendre le routeur système selon les exigences,
Application / CORE / CODE> Répertoire LI>
ol>
p>
/ *
* Pour changer cet en-tête de licence, choisissez les en-têtes de licence dans les propriétés du projet.
* Pour changer ce fichier de modèle, choisissez Outils | Modèles
* et ouvrez le modèle dans l'éditeur.
* / p> xxx pré> et écraser _set_default_controller () code> à partir de la méthode personnalisée, il fonctionnera à partir du contrôleur de sous-répertoires comme contrôleur de répertoire racine. P > et dans application / config / config / routtes.php code> p> Si vous avez besoin de contrôleur par défaut sous le répertoire par défaut, P>
$route['default_controller'] = "welcome/index";
- Admin - Dossier Li>
- administrateurs - contrôleur li>
- Connexion - Méthode Li>
ul>
Si vous avez besoin d'un contrôleur par défaut de répertoire racine, alors p> xxx pré>
- Bienvenue - Contrôleur Li>
- Index - Méthode LI>
ul>
Je ne sais pas qu'il fonctionnera dans toutes les versions, mais testé dans CI3.0.6 strong> p> P>
Vous venez de me sauver le stress de la ré-création de cette ... Thumbs Up!
@Girish, ci-dessus code est pour défaut_controller, si l'utilisateur souhaite accéder à l'URL exemple / admin quelque chose comme $ route [' admin '] = "admin / index"; est-ce que ça marchera? Parce que je reçois un objet d'erreur non trouvé.
C'est un code d'extension pour le contrôleur de contrôleur / subdircetory pour le routeur de contrôleur par défaut avec le contrôleur par défaut CI. il devrait fonctionner selon les exigences
Hey @girish, j'ai ajouté My_Router.PHP et définissez le par défaut_controller code> comme
public / home code> car j'ai un directeur public à l'intérieur du contrôleur dir et un contrôleur Home.php à l'intérieur du directeur général qui ont une action indexée. J'ai ajouté base_url dans config.php aussi. mais ne peut toujours pas accéder à la valeur par défaut_controller avec
/ code>. Bien que tous les autres itinéraires spécifiés dans les routes.php fonctionnent. Que devrais-je avoir manqué? PS: Cela fonctionne correctement bien dans Localhost, Live Server ayant un problème.
ma structure de dossier dans les contrôleurs /homeindex.phpled_strong ><?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once(APPPATH.'controllers/frontend/Home.php');
class homeIndex extends home {
public function index() {
$this->action();
}
}
Ajoutez cette ligne dans application / config / routes.php
dans application / config / routes.php Add Cette
$this->set_directory( "user" ); $route['default_controller'] = 'home/index';
Si j'utilise le code suivant , un autre itinéraire dans un autre réseau de sous-répertoires ne fonctionne pas. P> Supposons que j'utilise l'utilisateur sous-répertoire dans le répertoire de contrôleur pour Contrôleur par défaut. Mais si j'aime utiliser le sous-répertoire avanttend pour un autre itinéraire, p> alors il ne fonctionne pas. p> p>
Même si la question a beaucoup (et une réponse acceptée), je voudrais encore poster le mien.
J'ai compris que les sous-dossiers fonctionnent pour des itinéraires réguliers. Par exemple, je peux faire: p> et si je visitent si nous examinons le Routage URI> Routes réservées , il est indiqué: P> Vous ne pouvez pas utiliser de répertoire dans une partie de ce paramètre! p>
blockQuote> Nous devons donc avoir besoin de pirater notre chemin. J'ai utilisé Girish 's Approche . J'ai examiné le Au début, je pensais que Girish fait Un changement statique de la méthode code> _set_default_controller code>, qu'elle ne permet que des sous-dossiers. Je pensais que cela devrait être dynamique et que le sous-dossier devrait être facultatif. Plus tard, je me suis rendu compte qu'il faisait une affaire pour cela aussi, mais son code a dupliquer la logique et j'étais déjà fait avec le mien. Donc, je le pose quand même. P> site / frontal / test code>, cela fonctionne comme prévu. Le problème consiste à obtenir
"default_controller" code> pour fonctionner avec les sous-dossiers. Par exemple, ce qui suit ne fonctionne pas: p>
system / core / router.php code> et créé
application / core / my_router.php code>. P>
La manière dont j'ai lu la section du sous-dossier du Guide de l'utilisateur est que chaque sous-dossier devra avoir sa propre valeur par défaut_controller, comme vous l'avez fait avec "dossier / home.php"
J'ai vraiment du mal à comprendre de cette façon, je l'ai répété tant de fois ... Cela signifierait ajouter un nouvel itinéraire pour chaque répertoire et n'est pas vraiment identique au "contrôleur par défaut". Je peux certainement le faire de cette façon, si nécessaire si besoin d'être, dans ce cas, je n'utilise que un seul répertoire, mais dans les projets futurs, je vais certainement utiliser plusieurs répertoires sous la racine. Bravo pour la lecture et la réaction.
A fait un test et semble qu'il devrait réellement fonctionner en déclarant une par défaut_controller pour tous les sous-dossiers. Je pouvais voir un acheminement en conflit, mais pas si vous obtenez un 404. Je suis exclu.
Donc ça fonctionne bien pour vous? Auquel cas je peux probablement le mettre à mon installation, quelque chose que j'ai mal fait quelque part ou quelque chose de mal configuré.