Codeigniter 4 の単一インストールで共有サイトから複数のアプリケーション モデルを呼び出す
P粉653045807
P粉653045807 2023-08-31 22:44:08
0
2
443
<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粉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 学習者の迅速な成長を支援します!