奇怪的Zend框架行为-找不到索引控制器操作

问题描述 投票:0回答:2

我最近开始了一个新的zend框架项目。我通过ZF工具创建了所有的数据库表模型,模型,控制器,动作,表单和启用的布局。我创建的所有项目都显示在.zf-project.xml中。

然后我开始设置默认布局的第一个页眉和页脚。此布局的底部是带有多个链接的页脚导航部分,例如:

    <a href="/howitworks">How it Works</a>

单击此按钮后,应该导航到索引控制器/ howitworksAction,但是没有。相反,我得到一个错误说明:

    Message: Invalid controller specified (howitworks)

    **Stack trace:**

    #0 /usr/share/php/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #1 /usr/share/php/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #2 /usr/share/php/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #3 /var/www/vhosts/lokals.mediagiantdesign.com/httpdocs/public/index.php(26): Zend_Application->run()
    #4 {main}  
    Request Parameters:

    array (
      'controller' => 'howitworks',
      'action' => 'index',
      'module' => 'default',
    )  

如果我强制将URL设置为/ index / howitworks,则可以正常工作。我对此完全不满意,因为这是我在发生这种情况时构建的第一个Zend应用程序。在以前的应用程序中,此链接开箱即用。我尚未设置自定义路由器,引导程序是准系统。所以我不知道为什么这不起作用。

我以为zend首先寻找与该控制器匹配的控制器,如果找不到,则在索引中寻找匹配的动作,如果找不到,则假定它是/ public中的文件。如果是这样,那我在这里想念什么?

谢谢。瑞克

zend-framework
2个回答
1
投票

默认情况下,URL domain.com/howitworks将在howitworksController中引用indexAction。如果找不到,Zend将继续执行错误控制器以查找如何处理错误。默认情况下,它不会传递给indexcontroller,除非您在errorController中有一条路由或某些错误处理会告诉Zend使用此后备选项


2
投票

默认的Zend Framework网址结构是:http://yourdomain.com/controller/action/params。默认情况下,无论何时Zend Framework路由格式为“ http:// yourdomain / howitworks”的URL,它都会将howitworks视为控制器,并且由于未指定任何操作,因此将假定indexAction。使用Zend url视图助手总是有帮助的,以避免造成混淆。

    <a href="<?php  echo $this->url(array('controller' => 'index', 'action' => 'howitworks'), null, true); ?>"

如果要在IndexController中使用“ / howitworks”指向howitworksAction,则需要在bootstrap.php中设置自定义路由。

© www.soinside.com 2019 - 2024. All rights reserved.