2012-09-05 16 views
1

我正在嘗試爲ZEND構建的我的網站構建一個菜單。我是ZEND的新手。 因此,我在控制器中創建了一個名爲BlogCateogoriesController的動作catmenuAction()。我也爲它創建了一個veiw腳本。

現在在master.phtml文件中,我試圖調用這個視圖腳本來呈現我的菜單。其實我認爲這就是我將如何將最新消息,評論,推文發送到我的頁面(Joomla中lika模塊的方式)。

在我master.phtml文件,我宣佈

<?php $this->layout()->categoriesList = $this->action('catmenu', 'Blog_BlogCategories'); ?> 

,現在我得到這個可怕的錯誤,指出它無法找到Blog_BlogCategoriesController:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (Blog_BlogCategories)' in D:\Server\xampp\htdocs\zendtest\library\Zend\Controller\Dispatcher\Standard.php:248 Stack trace: #0 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Helper\Action.php(135): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 [internal function]: Zend_View_Helper_Action->action('catmenu', 'Blog_BlogCatego...') #2 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Abstract.php(350): call_user_func_array(Array, Array) #3 [internal function]: Zend_View_Abstract->__call('action', Array) #4 D:\Server\xampp\htdocs\zendtest\application\layouts\master.phtml(20): Zend_View->action('catmenu', 'Blog_BlogCatego...') #5 D:\Server\xampp\htdocs\zendtest\library\Zend\View.php(108): include('D:\Server\xampp...') #6 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Abstract.php(888): Zend_View->_run('D:\Server\xampp...') #7 D:\Ser in D:\Server\xampp\htdocs\zendtest\library\Zend\Controller\Plugin\Broker.php on line 336 

幫我請! !

+0

檢查控制器名稱。看看它們是否相同。看看你是否有寫在路由文件上的東西。我不是Zend的用戶,所以我只能推薦你的東西。我不確定我的建議是否有效! – Deepak

回答

3

語法Zend_View_Helper_Action是這樣的:

action(string $action, string $controller, string $module = null, array $params = array()) : string

那麼,你叫:

$this->action('catmenu', 'Blog_BlogCategories');

我假設您在「Blog」模塊中有一個類Blog_BlogCategoriesController。您需要致電:

$this->action('catmenu', 'BlogCategories', 'Blog');

+0

非常感謝!我正在尋找動作函數的定義,它需要什麼參數,但找不到它。 – mrGott

+0

以下是他們的API文檔的鏈接:http://framework.zend.com/docs/api – tuespetre

2

根據我的理解,我嘗試了下面的腳本。你已經使用了master.phtml文件,你必須提到它的位置以及它與問題的關係。使用這些http://framework.zend.com/manual/en/zend.tool.framework.clitool.html 命令行創建項目然後模塊,然後控制器和佈局。下面

其餘的是解釋(和希望這有助於)

applicaiton 
    -config 
    -controller 
    -IndexController.php 
    -forms 
    -layouts 
    -scripts 
     -layout.phtml 
    -models 
    -modules 
    -Blog 
     -contollers 
     -IndexController.php 
     -CateogoriesController.php 
     -models 
     -views 
     -helpers 
    -scripts 
     -error 
     -index 
     -index.phtml 
      -cateogories 
      -index.php 
    -views 
    -helpers 
    -scripts 
     -error 
     -index 
     -index.phtml 
     -partials 
     -menu.phtml 
    -Bootstrap.php 

佈局/腳本/ layout.phtml

<?php 
$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); 
$this->headTitle($this->headtitle); 
echo $this->doctype(); 
?> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<?php echo $this->headMeta(); ?> 
<?php echo $this->headTitle(); ?> 
<body> 
<!-- loading menu --> 
<?php echo $this->partial('partials/menu.phtml', 'default'); ?> 
<?php echo $this->layout()->content; ?> 
</body> 
</html> 

這是佈局腳本,注意佈局() - >內容將加載您當前的視圖文件 ,所以你不需要嘮叨這裏的任何東西 在這裏我已經稱爲部分視圖這是鏈接到視圖這是默認模塊

模塊/博客/控制器/ CateogoriesController.php

<?php 
class Blog_CateogoriesController extends Zend_Controller_Action 
{ 
    public function init() 
    { 

    } 
    //Default function 
    public function indexAction() 
    { 
    } 
} 

這是你Blog_CateogoriesController類的基本結構

模塊/博客/視圖/腳本/ cateogories/index.phtml

<div class="menu"></div> 
<div class="contant"></div> 

您的基本頁面佈局

views/scripts/partials/menu。PHTML

<!-- menu --> 
<ul> <li> </li> <ul> 

你的菜單中的HTML代碼

相關問題