検索

ホームページ  >  に質問  >  本文

Codeigniter 4 の単一インストールで共有サイトから複数のアプリケーション モデルを呼び出す

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

全員に返信(2)返信します

  • P粉493534105

    P粉4935341052023-09-01 20:04:17

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

    こんな例です

    リーリー

    返事
    0
  • P粉722409996

    P粉7224099962023-09-01 10:37:48

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

    フォルダー構造

    リーリー

    コントローラー - Home.php

    リーリー

    Autoload.php

    リーリー

    Constants.php

    リーリー

    DBSetting.php

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

    クラス DBSetting 拡張モデル{

    リーリー

    }

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

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

    返事
    0
  • キャンセル返事