Comment appeler des modèles depuis d'autres sites multi-applications dans une seule installation de Codeigniter 4 ?
La structure des dossiers ressemble à ceci :
- WebsiteFolder --Site1 --- application --- publique ---essais --- inscriptible (.env, spark et autres fichiers) --Site2 --- application --- publique ---essais --- inscriptible (.env, spark et autres fichiers) -- système
Voici mon exemple de code :
Sur le site 1
Constants.php J'ai défini un répertoire racine pour localiser le site2.
define('ROOTSOURCE', dirname(__DIR__,3) . 'site2');
Ceci renvoie :
E:Projectwebsitesite2
Autoload.php
J'ai configuré PSR4.
public $psr4 = [ APP_NAMESPACE => APPPATH, // Pour l'espace de noms d'application personnalisé 'Config' => APPPATH 'Config', 'SourceModels' => ROOTSOURCE '/app/Modèles/'. ];≪/pré>Ensuite, j'exécute la commande SPARK :
espaces de noms php sparket retour
+-----------------------+------------- --- ----------------------------------------------- --- -------------+--------+ | Espace de noms | Chemin | +------------------+------------------------------ ---- ----------------------------------------------- ---- ------+--------+ | CodeIgniter | Système de site Web E:ProjectDennisLiu Oui | | Application | E:ProjetDennisLiuwebsite1app Oui | | Configuration | E:ProjetDennisLiuwebsite1appConfig Oui | | Modèles sources | E:ProjectDennisLiuwebsite2appModels Oui | +------------------+------------------------------ ---- ----------------------------------------------- ---- ------+--------+Recherchez ensuite l'espace de noms SourceModels. Jusqu'ici, tout va bien.
Contrôleur=> Home.php
espace de noms AppControllers; utiliser des modèles sources ; la classe Home étend BaseController { index de fonction publique() { $setting = nouveau SourceModelsSetting(); return view('welcome_message'); }Lorsque j'exécute le contrôleur, j'obtiens :
Classe 'SourceModelsSetting' introuvable
Étape suivante,
Sur le site 2
J'ai le modèle Paramètres dans le dossier des modèles Site2.
Remarque :
Tout fonctionne correctement sur le site 2.
Ma question est l'erreur que j'obtiens : "Classe 'SourceModelsSetting' introuvable"Quel est le paramètre correct pour appeler les modèles du site 2 dans une seule installation d'application de codeigniter 4 ? . ≪ /p>
Remarque : Il s'agit d'une installation unique de codeigniter 4 pour les deux sites Web. J'ai partagé le dossier système.
Vous pouvez accéder au modèle dans une classe en créant une nouvelle instance ou en utilisant la fonction d'assistance model().
Des exemples comme celui-ci
J'ai trouvé le problème. C'est la bonne façon de procéder.
Structure des dossiers
Contrôleur - Home.php
Autoload.php
Constantes.php
DBSetting.php
Modèle de partage d'espace de noms ; Utilisez CodeIgniterModel ;
Modèle d'extension de classe DBSetting{
}
On peut aussi appeler le modèle du site 2. Définissez simplement le chemin correct dans Autoload.php pour référencer le modèle dans le site 2.
Remarque :Si un modèle du site 2 contient un autre modèle ou lien, si nous appelons depuis le site 1, le système codeigniter 4 lira le lien, modèle du site 1. Assurez-vous donc d'appeler le modèle normal sur le site 2. Ou créez simplement un dossier de modèle partagé comme ci-dessus.