Rufen Sie mehrere Anwendungsmodelle von einer gemeinsamen Site in einer einzigen Installation von Codeigniter 4 auf
P粉653045807
P粉653045807 2023-08-31 22:44:08
0
2
412

Wie rufe ich Modelle von anderen Standorten mit mehreren Anwendungen in einer einzigen Installation von Codeigniter 4 auf?

Die Ordnerstruktur sieht folgendermaßen aus:

- WebsiteFolder --Site1 ---ca ---öffentlich --- Tests --- beschreibbar (.env, spark und andere Dateien) --Site2 ---ca --- öffentlich --- Tests --- beschreibbar (.env, spark und andere Dateien) -- system

Hier ist mein Beispielcode:

Am Standort 1


Constants.php Ich habe ein Stammverzeichnis definiert, um site2 zu finden.

define('ROOTSOURCE', dirname(__DIR__,3) . 'site2');

Dies gibt Folgendes zurück:

E:Projectwebsitesite2

Autoload.php

Ich habe PSR4 eingerichtet.

public $psr4 = [ APP_NAMESPACE => APPPATH, // Für benutzerdefinierten App-Namespace 'Config' => APPPATH . 'SourceModels' => ROOTSOURCE . '/app/Models/' ];

Dann führe ich den SPARK-Befehl aus:

php spark namespaces

und return

+------------------+------------- --- ------------------ --- --------+--------+ |. Namensraum |. Pfad | +----+----------------------------- ---- ---------------------------------------------- ---- ------+--------+ |. CodeIgniter |. E:ProjectDennisLiuwebsitesystem | |. App |. E:ProjectDennisLiuwebsite1app | |. Config |. E:ProjectDennisLiuwebsite1appConfig | |. SourceModels |. E:ProjectDennisLiuwebsite2appModels | +----+----------------------------- ---- ---------------------------------------------- ---- ------+--------+

Suchen Sie dann den Namespace SourceModels. So weit, ist es gut.

Controller=> Home.php

namespace AppControllers; Verwenden Sie SourceModels. Die Klasse Home erweitert BaseController { öffentliche Funktion index() { $setting = new SourceModelsSetting(); return view('welcome_message'); }

Wenn ich den Controller starte, erhalte ich Folgendes:

Klasse „SourceModelsSetting“ nicht gefunden

Nächster Schritt,

Am Standort 2

Ich habe das Modell Einstellungen im Site2-Modellordner.

Hinweis:

In Site 2 funktioniert alles einwandfrei.

Meine Frage ist die Fehlermeldung „Klasse 'SourceModelsSetting' nicht gefunden“Was ist die richtige Einstellung zum Aufrufen von Site-2-Modellen in einer einzelnen App-Installation von Codeigniter 4? . < /p>

Hinweis: Dies ist eine einzelne Installation von Codeigniter 4 für beide Websites. Ich habe den Systemordner freigegeben.

P粉653045807
P粉653045807

Antworte allen (2)
P粉493534105

您可以通过创建新实例或使用 model() 辅助函数来访问类中的模型。

像这样的例子

// 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粉722409996

    我发现了问题。这是执行此操作的正确方法。

    文件夹结构

    - 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

    控制器 - 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' ];

    Constants.php

    define('ROOTSOURCE', dirname(__DIR__,3));

    DBSetting.php

    命名空间共享\模型; 使用 CodeIgniter\Model;

    类 DBSetting 扩展模型{

    function __construct() { parent::__construct(); } public function save() { return true; }

    }

    我们也可以调用站点2中的模型。只需在Autoload.php中设置正确的路径即可引用站点2中的模型。

    注意:如果站点 2 中的模型包含另一个模型或链接,如果我们从站点 1 调用,则 codeigniter 4 系统将读取来自站点 1 的链接、模型。因此,请确保调用站点 2 中的普通模型。或者只是创建一个共享模型文件夹如上。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!