Panggil berbilang model aplikasi daripada tapak kongsi dalam satu pemasangan Codeigniter 4
P粉653045807
2023-08-31 22:44:08
<p>Bagaimana untuk memanggil model dari tapak berbilang aplikasi lain dalam satu pemasangan Codeigniter 4? </p>
<p>Struktur folder kelihatan seperti ini: </p>
<pre class="brush:php;toolbar:false;">- WebsiteFolder
--Tapak1
--- aplikasi
--- awam
--- ujian
--- boleh ditulis
(.env, spark dan fail lain)
--Tapak2
--- aplikasi
--- awam
--- ujian
--- boleh ditulis
(.env, spark dan fail lain)
-- sistem</pra>
<p>Berikut ialah kod sampel saya: </p>
<p><strong>Di tapak 1</strong></p>
<hr />
<p><strong>Constants.php</strong>
Saya telah menentukan direktori akar untuk mencari tapak2. </p>
<pre class="brush:php;toolbar:false;">define('ROOTSOURCE', dirname(__DIR__,3) . 'site2');</pre>
<p>Ini kembali: </p>
<p><em>E:Laman web Projek2</em></p>
<p><strong>Autoload.php</strong></p>
<p>Saya telah menyediakan PSR4. </p>
<pre class="brush:php;toolbar:false;">public $psr4 = [
APP_NAMESPACE => APPPATH, // Untuk ruang nama aplikasi tersuai
'Config' => APPPATH .
'SourceModels' => ROOTSOURCE '/app/Models/'
];</pre>
<p>Kemudian saya menjalankan arahan SPARK: </p>
<pre class="brush:php;toolbar:false;">php spark namespaces</pre>
<p>dan kembalikan</p>
<pre class="brush:php;toolbar:false;">+------------------+------------- --------------------------------------------------- -------------------------+--------+
|. Ruang nama |
+--------------------------------+-------------------------------- ---- ------------------------------------------------ ---- ------+--------+
|. CodeIgniter |
|. Apl |. E:ProjectDennisLiuwebsite1app |
|. E:ProjectDennisLiuwebsite1appConfig |
|. SourceModels |
+--------------------------------+-------------------------------- ---- ------------------------------------------------ ---- ------+--------+</pre>
<p>Kemudian cari ruang nama <strong>SourceModels</strong>. Setakat ini baik.</p>
<p>Pengawal=> <strong>Home.php</strong></p>
<pre class="brush:php;toolbar:false;">namespace AppControllers;
gunakan SourceModels;
Kelas Utama memanjangkan BaseController
{
indeks fungsi awam ()
{
$setting = new SourceModelsSetting();
return view('welcome_message');
}</pre>
<p>Apabila saya menjalankan pengawal, saya mendapat: </p>
<blockquote>
<p><strong>Kelas 'SourceModelsSetting' tidak ditemui</strong></p>
</blockquote>
<p>Langkah seterusnya,</p>
<p><strong>Di tapak 2</strong></p>
<p>Saya mempunyai model <strong>Tetapan</strong> dalam folder model Site2. </p>
<p><strong>Nota: </strong></p>
<p>Semuanya berfungsi dengan baik dalam Tapak 2. </p>
<p>Soalan saya ialah ralat yang saya perolehi "Tetapan <strong>'SourceModelsSetting' tidak ditemui"</strong>Apakah tetapan yang betul untuk memanggil model tapak 2 dalam pemasangan apl tunggal codeigniter 4? . < /p>
<p><strong>Nota: </strong>
Ini adalah pemasangan tunggal codeigniter 4 untuk kedua-dua tapak web. Saya berkongsi folder sistem. </p>
Anda boleh mengakses model dalam kelas dengan mencipta tika baharu atau menggunakan fungsi pembantu model().
Contoh seperti ini
Saya jumpa masalahnya. Ini adalah cara yang betul untuk melakukan ini.
Struktur folder
Pengawal - Home.php
Autoload.php
Constants.php
DBSetting.php
Model perkongsian ruang nama; Gunakan CodeIgniterModel
Model sambungan Penetapan DBSeting Kelas{
}
Kami juga boleh memanggil model di tapak 2. Hanya tetapkan laluan yang betul dalam Autoload.php untuk merujuk model di tapak 2.
Nota: Jika model dalam tapak 2 mengandungi model atau pautan lain, jika kami memanggil dari tapak 1, sistem pencucuh kod 4 akan membaca pautan, model dari tapak 1. Jadi pastikan untuk memanggil model biasa di tapak 2. Atau buat sahaja folder model kongsi seperti di atas.