web-dev-qa-db-fra.com

Routage des contrôleurs dans les sous-dossiers à l'aide de CodeIgniter

car je veux séparer le frontend et le backend du système. j'ai créé 2 dossiers à l'intérieur des contrôleurs comme frontend et backend

Voici la structure de mon dossier de contrôleur

controller
 --frontend
   ---store.php
   ---processing.php
   ---profile.php
   ---authenticate.php
   ---register.php 

 --backend
   ---authenticate.php
   ---stats.php
   ---users.php
   ---property_manage.php
   ---register.php 

je peux accéder aux fonctions en utilisant

frontend/store/add
frontend/store/manage
......

backend/stats/sales
backend/stats/payments
.....

mais je veux enlever le frontend et les segments backend de l'url.

J'ai vérifié la fonctionnalité de routage dans codeigniter mais selon mes connaissances, je dois spécifier individuellement chaque itinéraire. Étant donné que j'ai environ 12 contrôleurs et chacun a environ 10 à 15 fonctions, je devrais peut-être spécifier chaque fonction de l'itinéraire.

existe-t-il un autre moyen efficace d'utiliser le routage ou tout autre moyen? (sans utiliser aucun htaccess)

21
LiveEn

Faites ceci:

$route['store/(:any)'] = 'frontend/store/$1';
$route['processing/(:any)'] = 'frontend/processing/$1';
$route['profile/(:any)'] = 'frontend/profile/$1';

Idem pour le backend:

$route['backend/(:any)'] = 'backend/authenticate/$1';

Vous n'avez pas à créer chaque règle dans routes.php pour chaque fonction du contrôleur, plutôt une règle par contrôleur sera suffisante comme mentionné ci-dessus.

Routage URI: Guide de l'utilisateur CodeIgniter

$1 représente la première expression, ici (:any) est l'expression, vous pouvez avoir plusieurs expressions sur chaque règle et l'expression est représentée par $1, $2 et ainsi de suite de l'autre côté.

De même, (:num) correspondra à un segment contenant uniquement des chiffres, (:any) correspondra à un segment contenant n'importe quel caractère, (\d+) correspondra à n'importe quel chiffre, ([a-z]+) correspondra à tout texte alpha.

24
hsuk

Vous devez être en mesure de différencier le frontend du backend d'une manière ou d'une autre. Peut-être définir une route qui transmet tout uri avec "admin" au backend, et tout sans "admin" au frontend.

1
swatkins

Pour Front-End, vous pouvez l'ajouter dans routes.php:

$this->set_directory( "frontend" );

donc dans l'URL du navigateur, il n'est pas nécessaire d'inclure "frontend"

1
Vishnu Ugale