欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

zend framework多模塊多布局配置

 更新時間:2011年02月26日 00:04:53   作者:  
zend framework對多模塊的支持是很好的,但是可能是由于功能太過強大的緣故,部署起來并不是很容易。
許多人在使用過程中都會遇到這樣那樣的問題,而且zend framework現(xiàn)在已經(jīng)到1.11版本了,網(wǎng)絡上的很多資料都還停留在舊版本上,因此我在這里以當前的最新版本1.11為例,來簡單介紹一下如何使用zend framework創(chuàng)建模塊化的應用程序。由于今后框架的版本升級,有些內容可能會過時,請及時參閱最新的使用手冊

1、準備工作

首先假設你已經(jīng)部署了web服務器和php,并下載了zend framework的最新版本,創(chuàng)建了一個最原始的zend framework項目,并可以訪問默認的action了。你可以使用zend framework工具來創(chuàng)建項目,具體操作參見使用zend framework創(chuàng)建項目。當然也可以自己手動建立文件夾和文件,參見zend framework推薦的項目目錄結構

簡單地看一下默認的幾個重要目錄。
首先是public,它不但存放了程序的入口點index.php,還可以存放圖片,css,javascript文件等。
其次是library,用于存放一些類庫,包括你自己定義的或第三方的類庫。
然后是test,用于存放單元測試等測試文件的。
最后,也是和我們這里要講的關系最大的目錄——application。進到application目錄下,會有以下目錄:
configs:存放配置文件,一般會有一個主配置文件application.ini;
controllers:操制器,如默認的IndexController.php;
models:存放業(yè)務邏輯,數(shù)據(jù)模型等文件;
views:視圖層的腳本,一般以.phtml為后綴名;
modules:模塊目錄,使用工具默認選項自動生成的是沒有這個目錄的,需要手動添加。modules底下可以包含多個以模塊名命名的文件夾,如admin,默認是default,一個文件夾代表一個模塊,其下的目錄結構與application目錄類似,又可以包含controllers,models,views等目錄。需要注意的是模塊下的controllers下面的文件的類名請加上模塊名前綴,如application/modules/admin/controllers/IndexController.php的類名為Admin_IndexController。

如果你需要在項目中方便的使用你自己寫的一些類庫(如名稱空間是Rockux),或是第三方的類庫,可以修改application.ini文件,添加以下行:

復制代碼 代碼如下:

autoloaderNamespaces.rockux = "Rockux_"
autoloaderNamespaces.thirdParty = "ThirdPartyLibrary_"

當然你也可以根據(jù)需要多添加幾個,不過請注意最后面的下劃線。

2、建立模塊
現(xiàn)在我們來創(chuàng)建一個admin模塊,目錄如下:
application/modules/admin/controllers
application/modules/admin/models
application/modules/admin/views
application/modules/admin/views/scripts
application/modules/admin/views/helpers
application/modules/admin/views/filters
并創(chuàng)建以下文件:
application/modules/admin/controllers/IndexController.php(類名為Admin_IndexController)
application/modules/admin/views/scripts/index/index.phtml

除了新建模塊文件之外,還需要更改配置文件application.ini,刪除以下行,如果有的話:
復制代碼 代碼如下:

resources.frontController.controllerDirectory = APPLICATION_PATH"/controllers"

再加上如下行:
復制代碼 代碼如下:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultModule = "default"
resources.modules[]

這樣,再訪問http://localhost/admin,應該就能看到admin模塊輸出的內容了。
如果我們要充分發(fā)揮模塊的強大功能,我們還需要為模塊添加一個啟動文件——Bootstrap.php。它可以使得你在事個模塊中方便的使用類資源,models, filters, helpers等。在admin下新建Bootstrap.php,代碼如下:
復制代碼 代碼如下:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}

并且在application/Bootstrap.php文件里加入以下方法:
復制代碼 代碼如下:

protected function _initAppAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'App',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}

復制代碼 代碼如下:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layout = "admin"

第二種,不同模塊的布局腳本文件分別存放在各自的模塊文件夾下
可以在application下新建如下目錄和文件:
application/layouts/scripts/layout.phtml
application/modules/admin/layouts/scripts/layout.phtml

在配置文件application.ini中添加如下幾行:
復制代碼 代碼如下:

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"

不論是第一種還是第二種,這時如果訪問http://localhost/admin,你會發(fā)現(xiàn)系統(tǒng)并沒有使用期望的admin.phtml作為布局文件,而是使用了默認的layout.phtml。這是因為admin那行配置并不是系統(tǒng)默認能處理的有效配置,所以我們要自己來處理它。

我們新建文件:library/Rockux/Controller/Action/Helper/LayoutLoader.php,

針對第一種情況代碼如下:
復制代碼 代碼如下:

class Rockux_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{

public function preDispatch()
{
$bootstrap = $this->getActionController()
->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions();
$module = $this->getRequest()->getModuleName();
if (isset($config[$module]['resources']['layout']['layout'])) {
$layoutScript = $config[$module]['resources']['layout']['layout'];
$this->getActionController()
->getHelper('layout')
->setLayout($layoutScript);
}
}

}

針對第二種情況代碼如下:
復制代碼 代碼如下:

class Rockux_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{

public function preDispatch()
{
$bootstrap = $this->getActionController()
->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions();
$module = $this->getRequest()->getModuleName();
if (isset($config[$module]['resources']['layout']['layoutPath'])) {
$layoutPath =
$config[$module]['resources']['layout']['layoutPath'];
$this->getActionController()
->getHelper('layout')
->setLayoutPath($layoutPath);
}
}
}

接下來我們還需要將它添加到application/Bootstrap.php里去
復制代碼 代碼如下:

protected function _initLayoutHelper()
{
$this->bootstrap('frontController');
$layout = Zend_Controller_Action_HelperBroker::addHelper(
new Rockux_Controller_Action_Helper_LayoutLoader());
}

再次訪問http://localhost/admin,應當就可以看到使用指定的布局文件了。
如果要針對某個特定的controller使用特定的layout,可以在controller的init()方法里添加如下代碼:
復制代碼 代碼如下:

$layout = Zend_Layout::getMvcInstance();
$layout->setLayout('layout_special');

相關文章

  • PHP數(shù)組函數(shù)知識匯總

    PHP數(shù)組函數(shù)知識匯總

    什么是數(shù)組?數(shù)組就是被命名的用來存儲一系列數(shù)值的地方。這篇文章主要匯總了PHP數(shù)組函數(shù)最基礎的知識點,感興趣的小伙伴們可以參考一下
    2016-05-05
  • PHP使用Redis替代文件存儲Session的方法

    PHP使用Redis替代文件存儲Session的方法

    這篇文章主要介紹了PHP使用Redis替代文件存儲Session的方法,結合實例形式較為詳細的分析了Session的基本操作方法及使用Redis存儲session的相關技巧,需要的朋友可以參考下
    2017-02-02
  • 詳解PHP優(yōu)化巨量關鍵詞的匹配

    詳解PHP優(yōu)化巨量關鍵詞的匹配

    本文完整介紹了我的實現(xiàn)方式,如何將需要運行十小時的任務優(yōu)化到十分鐘以內。雖然實現(xiàn)語言是PHP,但本文介紹的更多的思想,應該能給大家一些幫助。
    2021-05-05
  • php源代碼安裝常見錯誤與解決辦法分享

    php源代碼安裝常見錯誤與解決辦法分享

    這篇文章主要介紹了在linux服務器中通過源代碼安裝php過程中,經(jīng)常會遇到的一些問題做個小結,特分享給需要的朋友
    2013-05-05
  • PHP也能干大事 隨機函數(shù)

    PHP也能干大事 隨機函數(shù)

    這篇文章主要介紹了PHP也能干大事 隨機函數(shù),需要的朋友可以參考下
    2015-04-04
  • 學習php開源項目的源碼指南

    學習php開源項目的源碼指南

    這篇文章主要介紹了學習php開源項目的源碼指南,需要的朋友可以參考下
    2014-12-12
  • PHP實現(xiàn)的字符串匹配算法示例【sunday算法】

    PHP實現(xiàn)的字符串匹配算法示例【sunday算法】

    這篇文章主要介紹了PHP實現(xiàn)的字符串匹配算法,簡單描述了sunday算法的概念與原理,并結合實例形式分析了php基于sunday算法實現(xiàn)字符串匹配操作相關技巧,需要的朋友可以參考下
    2017-12-12
  • IIS安裝Apache偽靜態(tài)插件的具體操作圖文

    IIS安裝Apache偽靜態(tài)插件的具體操作圖文

    本篇文章是對IIS安裝Apache偽靜態(tài)插件的具體操作進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • PHP 上傳文件的方法(類)

    PHP 上傳文件的方法(類)

    一個很簡單的,常用PHP上次方法,我是從類里給大家拿出來的,直接可以使用,也可以繼續(xù)完善一下,大家參考一下
    2009-07-07
  • php修改數(shù)組鍵名的方法示例

    php修改數(shù)組鍵名的方法示例

    這篇文章主要介紹了php修改數(shù)組鍵名的方法,涉及php針對數(shù)組的遍歷、截取、轉換等相關操作技巧,需要的朋友可以參考下
    2017-04-04

最新評論