Maison > Questions et réponses > le corps du texte
P粉4935341052023-09-01 20:04:17
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
// Create a new class manually $userModel = new \App\Models\UserModel(); // Create a new class with the model function $userModel = model('App\Models\UserModel', false); // Create a shared instance of the model $userModel = model('App\Models\UserModel');
P粉7224099962023-09-01 10:37:48
J'ai trouvé le problème. C'est la bonne façon de procéder.
Structure des dossiers
- WebsiteFolder -- Site1 --- app --- public --- tests --- writeable (.env, spark and other file) -- Site2 --- app --- public --- tests --- writeable (.env, spark and other file) -- shared/Models (DBSetting.php) -- system
Contrôleur - Home.php
namespace App\Controllers; use shared\Models\DBSetting; class Home extends BaseController { public function index() { $db = new \shared\Models\DBSetting(); return view('welcome_message'); } }
Autoload.php
public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', 'shared\Models' => ROOTSOURCE . '/shared/Models' ];
Constantes.php
define('ROOTSOURCE', dirname(__DIR__,3));
DBSetting.php
Modèle de partage d'espace de noms ; Utilisez CodeIgniterModel ;
Modèle d'extension de classe DBSetting{
function __construct() { parent::__construct(); } public function save() { return true; }
}
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.