Codeigniter 4 の単一インストールで他のマルチアプリケーション サイトからモデルを呼び出すにはどうすればよいですか?
フォルダー構造は次のようになります:
- WebsiteFolder --サイト1 - -アプリ - - 公共 --- テスト --- 書き込み可能 (.env、spark、その他のファイル) --サイト2 - -アプリ - -公共 --- テスト --- 書き込み可能 (.env、spark、その他のファイル) -- システム
これが私のサンプルコードです:
サイト 1
Constants.php site2 を見つけるためのルート ディレクトリを定義しました。
define('ROOTSOURCE', dirname(__DIR__,3) . '\site2');
これは次を返します:
E:\Project\website\site2
Autoload.php
PSR4をセットアップしました。
public $psr4 = [ APP_NAMESPACE => APPPATH, // カスタム アプリ名前空間の場合 '構成' => APPPATH . '構成', 'Source\Models' => ROOTSOURCE . '/app/Models/' ];
次に、SPARK コマンドを実行します。
php Spark 名前空間
そしてreturn
--------------- ------------------ -------------------------------------------------- --------------------- -------- | ネームスペース | パス | 見つかりましたか? | --------------- --------------------------------- - ------------------------------------------------- - --- -------- | CodeIgniter | E:\Project\DennisLiu\website\system | はい | | アプリ | E:\Project\DennisLiu\website\site1\app | はい | | 構成 | E:\Project\DennisLiu\website\site1\app\Config | はい | | ソース\モデル | E:\プロジェクト\デニスリュー\website\site2\app\Models | はい | --------------- --------------------------------- - ------------------------------------------------- - --- --------
次に、名前空間 Source\Models を見つけます。ここまでは順調ですね。
Controller=> Home.php
名前空間 App\Controllers; ソース\モデルを使用します。 クラスホームはBaseControllerを拡張します { パブリック関数インデックス() { $setting = 新しい \Source\Models\Setting(); return view('welcome_message'); }
コントローラーを実行すると、次のメッセージが表示されます:
<ブロック引用>クラス「Source\Models\Setting」が見つかりません
次のステップ、
サイト 2
Site2 モデル フォルダにモデル設定 があります。
注:
サイト 2 ではすべてが正常に動作しています。
私の問題は、「クラス "Source\Models\Setting"" が見つかりません」というエラーが表示されることですcodeigniter 4 の単一アプリケーション インストールでサイト 2 モデルを呼び出すための正しい設定何ですか? 。 < /p>
注: これは、両方の Web サイトに codeigniter 4 を 1 回インストールするだけです。システムフォルダーを共有しました。
新しいインスタンスを作成するか、model() ヘルパー関数を使用することで、クラス内のモデルにアクセスできます。
こんな例です
リーリー問題が見つかりました。これが正しい方法です。
フォルダー構造
リーリーコントローラー - Home.php
リーリーAutoload.php
リーリーConstants.php
リーリーDBSetting.php
名前空間の共有\モデル; CodeIgniter\Model の使用;
クラス DBSetting 拡張モデル{
リーリー}
サイト 2 のモデルを呼び出すこともできます。 Autoload.php に正しいパスを設定して、サイト 2 のモデルを参照するだけです。
######知らせ:### サイト 2 のモデルに別のモデルまたはリンクが含まれている場合、サイト 1 から呼び出すと、codeigniter 4 システムはサイト 1 のリンク、モデルを読み取ります。したがって、サイト 2 では必ず通常のモデルを呼び出してください。または、上記のように共有モデル フォルダーを作成するだけです。