1

我正在尝试为我正在使用 ZEND 构建的网站构建一个菜单。我是 ZEND 的新手。因此,我在名为 BlogCateogoriesController 的控制器中创建了一个动作 catmenuAction()。我也为它创建了一个 veiw 脚本。

现在在 master.phtml 文件中,我试图调用这个视图脚本来呈现我的菜单。实际上,我认为这就是我将最新消息、评论、推文带到我的页面的方式(就像 Joomla 中的 lika MODULES 那样)。

在我的 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

请帮帮我!!!

4

2 回答 2

3

Zend_View_Helper_Action 的语法是这样的:

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

所以你打电话的地方:

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

我假设您在“博客”模块中有一个类 Blog_BlogCategoriesController。您需要致电:

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

于 2012-09-06T01:10:13.850 回答
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>

这是布局脚本,请注意 layout()->content 将加载您当前的视图文件,因此您不需要在这里更改任何内容,我称之为部分视图,它链接到默认模块的视图

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

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

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

这是您的 Blog_CateogoriesController 类的基本结构

模块/博客/视图/脚本/类别/index.phtml

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

你的基本页面布局

视图/脚本/部分/menu.phtml

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

你的菜单 html 代码

于 2012-09-06T00:55:59.100 回答