2011-06-11 50 views
0

我試圖讓我的頭轉向Zend Framework。Zend:調用一個動作

我創建了一個自定義路由

resources.router.routes.helloworld.route = /helloworld 
resources.router.routes.helloworld.defaults.module = default 
resources.router.routes.helloworld.defaults.controller = helloworld 
resources.router.routes.helloworld.defaults.action = display 

在我hellowrold控制器類我已經改變了indexAction()displayAction()

當我嘗試在瀏覽器中,我得到了以下錯誤消息加載頁面: 「script'xxx/display.phtml」中未找到路徑(C:/:等等等等等等)」

什麼我在這裏做錯了嗎?

回答

2

默認情況下,Zend Framework控制器操作使用ViewRenderer Controller助手。該幫助程序將與該操作相關的.phtml文件讀取爲相關操作的查看腳本。

控制器訪問模型並最終傳遞結果數據以查看腳本,因此查看腳本可以顯示數據。這是「MVC」縮寫中的「V」。

對於您的情況,您已指定您的默認操作命名爲「display」而不是「index」。

但我想你已經忘記爲這個動作創建一個視圖腳本文件。 默認視圖腳本位於APPLICATION_PATH /應用/視圖/腳本目錄中,這些假設:

  1. APPLICATION_PATH是你的應用程序結構和公共目錄駐留在,(例如/ VAR /在Debain Linux上或在Windows上的C:\ Program Files \ Apache Group \ Apache \ htdocs)。
  2. 你保持你的應用程序的源代碼(包括你的模型,控制器,模塊等)在名爲應用
  3. 如果你在你的應用模塊和例如你的模塊中定義的目錄應用/模塊;那麼視圖/腳本目錄位於每個模塊目錄中而不是應用程序結構的根目錄中。

在上面的目錄中,每個控制器應該有一個相關的子目錄,每個動作都有一個擴展名爲.phtml的視圖腳本文件。

您應該在那裏創建一個名爲「helloworld」的目錄,然後在該目錄中創建一個名爲「display.phtml」的文件,以便ViewRendere控制器輔助類可以加載它並將其用作此操作的視圖。

如果您不想有視圖腳本,則應該防止ViewRendere助手搜索視圖腳本文件。這樣做,在控制器代碼這個代碼添加到你的動作:

$this->_helper->viewRenderer->setNoRender(true); 

此代碼告訴視圖渲染動作助手不是搜索視圖文件。

請注意,以上所有內容都是針對默認配置的Zend Framework應用程序提及的,但可以通過配置應用程序,資源和幫助程序對象來更改。

+0

謝謝,非常清楚詳細的解釋。我沒有得到這種行爲默認綁定到一個視圖。我顯然有很多東西要學。 – 2011-06-11 11:18:15

相關問題