Zend框架的每個模塊佈局設置-跟進
作為後續行動,我以前的職位上,每個模塊的佈局設置為Zend框架 ,我已經更新了代碼,需要更少的配置,然後才(不是,它需要更多的幾行中,一個應用程序的配置!)。
我們再次利用一個動作助手Zend的控制器調用它的引導如下:
/ **
*設置了佈局腳本對每個模塊的基礎
* /
保護功能_initLayoutHelper()
{
$這個 ->引導('frontController');
$佈局 = Zend_Controller_Action_HelperBroker::addHelper(
新Pro_Controller_Action_Helper_SetLayoutPath(APPLICATION_PATH));
}
幾乎完全一樣,只不過這次我們面前不斷APPLICATION_PATH傳遞到構造函數作為我們的基本路徑。
接下來,控制器動作助手本身現在看起來如下:
/ ** *設置佈局路徑上的每個模塊的基礎上 * * @作者勞埃德沃特金斯 * @自16/02/2010 * @包臨 * @分裝 Controller_Action_Helper * / / ** *設置佈局路徑上的每個模塊的基礎上 * * @作者勞埃德沃特金斯 * @自16/02/2010 * @包臨 * @分裝 Controller_Action_Helper * / 類 Pro_Controller_Action_Helper_SetLayoutPath 延伸Zend_Controller_Action_Helper_Abstract { / ** *基路徑 * VaR的字符串* @ * / 保護 $ _path; / ** *構造 * * @參數字符串$路徑 * / 公共職能號 function __construct($路徑) { $這個 -> setBasePath($路徑); } / ** *設置相應的路徑 * * @參數字符串$路徑 * / 公共職能 setBasePath($路徑) { 如果(!is_string($路徑)| |空($路徑)){ 拋出新的異常('例外字符串基路徑'); } $這個 -> _path = $路徑; } / ** *獲取相應的路徑 * * @返回字符串 * / 保護功能_getBasePath() { 如果(is_null($這個 -> _path)){ 如果(!定義('APPLICATION_PATH')){ 拋出新的異常('基地路徑不能確定'); } $這個 -> _path = APPLICATION_PATH; } 返回$這個 -> _path; } / ** *設置佈局的基礎上的模塊路徑 * / 公共職能 preDispatch()在 { $模塊 = preg_replace函數( '/ [^排列] /我','',$這個 -> getRequest() - >“getModuleName() ); 如果($引導 = $此-> getActionController() - >“getInvokeArg('引導')){ = $ $視圖引導 ->的getResource('視圖'); $ layoutPath = $此-> _getBasePath()。 “/模組 /模塊} {$ /佈局 /腳本 /”; / *如果佈局目錄存在,那麼申請,否則,都將 *使用默認的後備 * / 如果(is_dir($ layoutPath)){ $這個 -> getActionController() - >“getHelper('佈局') - >“setLayoutPath($ layoutPath); $視圖> headLink() - >“appendStylesheet( “/風格 / {$模塊} / style.css中” ); } } } }
請注意,通過我們的基本路徑(參見 APPLICATION_PATH)在構造函數中,我們也有一個 getter和setter的基本路徑。 不同於以往版本的代碼,如果佈局路徑不存在,則該代碼將回落默認佈局的路徑。 如果沒有設置相應的路徑,將嘗試確定相應的路徑從不斷 APPLICATION_PATH,否則將引發異常。 我還厚臉皮拋出一個基於模塊的樣式表的好措施
該模塊為基礎的佈局確定從佈局腳本的路徑是否存在(顯然這種方法是可以改變的容易)。 這確實增加了一些開銷從安裝的application.ini(但是如果佈局路徑存在的PHP緩存結果將性能*),但你得到的回報更方便更容易的跌幅新的模塊。
就是這樣,沒有什麼不同,但你並不需要添加一個新的配置項,每次你想添加一個新的模塊:)
*要清除這個緩存(如需要)使用clearstatcache功能。


















































你好,請告訴我哪裡來創建類 Pro_Controller_Action_Helper_SetLayoutPath與該文件的名稱
我是新手在Zend。
謝謝
嗨Behrang,創建動作助手,找遍你喜歡的名字,我有我自己的'圖書館'命名空間'臨'。 你可以很容易地調用類的SetLayoutPath'並把它放在任何你喜歡,提供的代碼,你可以找到它所需的類擴展