2012-04-13 56 views
2

我想爲多個站點使用中央CI設置。我處理這個問題的方式是我創建了一個名爲MPACK的包,並將其添加到每個站點的配置文件中自動加載。CodeIgniter - 在多站點設置中擴展本機庫

文件夾結構:

/主

/系統(CI 2系統文件夾)

/MPack,還將

/站點1

/應用

站點2

/應用

這裏面MPack,還將我一起共享庫,模型,傭工等

然而,我想要有一個擴展的MY_Form_Validation,這是常見的所有網站。將類文件添加到/ MPACK /庫失敗。按預期將它添加到/ site1 /應用程序可以正常工作。

是否有任何方法可以在MPACK內部進行擴展?

謝謝你的時間。

+0

您應該只保留要包含在每個應用程序中的核心類的副本,併爲每個項目都有一個單獨的文件夾。按我描述的方式管理會不會更容易? – 2012-04-13 21:18:37

+0

我認爲管理起來會比較困難,因爲一旦我修改/修正了錯誤,我將不得不將其複製到所有網站。例如,如果我構建了一個搜索引擎,那麼我將在MPACK中擁有搜索類,並根據不同的需求將其擴展到每個應用程序中。 – mitai 2012-04-14 05:17:23

回答

0

請試試這個:

// Placed your MY_Form_validation.php under MPACK/libraries 
$this->load->add_package_path('/path/to/MPACK'); 
$this->load->library('form_validation'); 

您可以從CodeIgniter User Guide - Loader Class獲得更多的信息。 :)

您也可以自動加載你的包在/application/config/autoload.php$autoload['packages'] = array('/path/to/MPACK');

編輯:轉出,上述解決方案不起作用,因爲裝載機總是找APPPATH &基本路徑首先,我不知道修改這個核心課不會破壞一些東西。這在理論上是另一種解決方案:

你應該有你的MPack,還將表單驗證lib和網站的形式驗證的lib應該是符號鏈接到MPack,還將一個:

/site1/application/MY_Form_validation.php -> /MPACK/libraries/MY_Form_validation.php 

如果你只是使用一切從MPack,還將,沒有什麼專門針對/ site1的或/站點2,只是做一個文件夾鏈接:

/site1/application/libraries/ -> /MPACK/application/libraries/ 

希望這有助於=)

你可以在這裏閱讀更多:http://codeigniter.com/wiki/Multiple_Applications_via_Symlinks/

+0

嗨Rocco,這不起作用。它只是加載默認的form_validation類。顯然,Code Igniter不會檢查MY_類的包。 – mitai 2012-05-28 11:41:15

+0

@ user962411我剛剛更新了答案。試試吧=) – Rocco 2012-05-28 15:50:41

+0

這聽起來像一個很好的解決方案。如果網站每秒獲得數百次/數千次點擊,這是否會減慢加載速度? – mitai 2012-05-28 15:53:54