我正在尝试为我的网站构建一个我用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
请帮帮我!!!
答案 0 :(得分: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');
答案 1 :(得分: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() - &gt;内容将加载您当前的视图文件 所以你不需要在这里任何事情 在这里,我已经调用了部分视图,该视图链接到默认模块的视图
<强>模块/博客/控制器/ 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>
您的基本页面布局
<强>视图/脚本/分音/ menu.phtml 强>
<!-- menu -->
<ul> <li> </li> <ul>
您的菜单HTML代码