Codeigniter 4 の単一インストールで共有サイトから複数のアプリケーション モデルを呼び出す
P粉653045807
P粉653045807 2023-08-31 22:44:08
0
2
417

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 回インストールするだけです。システムフォルダーを共有しました。

P粉653045807
P粉653045807

全員に返信 (2)
P粉493534105

新しいインスタンスを作成するか、model() ヘルパー関数を使用することで、クラス内のモデルにアクセスできます。

こんな例です

リーリー
いいねを押す+0
    P粉722409996

    問題が見つかりました。これが正しい方法です。

    フォルダー構造

    リーリー

    コントローラー - Home.php

    リーリー

    Autoload.php

    リーリー

    Constants.php

    リーリー

    DBSetting.php

    名前空間の共有\モデル; CodeIgniter\Model の使用;

    クラス DBSetting 拡張モデル{

    リーリー

    }

    サイト 2 のモデルを呼び出すこともできます。 Autoload.php に正しいパスを設定して、サイト 2 のモデルを参照するだけです。

    ######知らせ:### サイト 2 のモデルに別のモデルまたはリンクが含まれている場合、サイト 1 から呼び出すと、codeigniter 4 システムはサイト 1 のリンク、モデルを読み取ります。したがって、サイト 2 では必ず通常のモデルを呼び出してください。または、上記のように共有モデル フォルダーを作成するだけです。

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!