zend-framework – 无效的控制器指定错误,即使控制器存在

我有一个名为MenuItem的camelcased控制器名称.而且我也为这个特定的控制器创建了一个路由器

$routeMenuItem = new Zend_Controller_Router_Route('/menu-item/:action/:menu/:parent/:id/*',array(
        'controller'    => 'MenuItem','action'        => 'index','menu'          => 1,'parent'        => 0,'id'            => 0        
    ));

不,当我导航到这个路线时,让我们说/ menu-item / index / 2我得到一个错误,无效的控制器指定(MenuItem)错误.

但是我在linux环境下部署时遇到了这个问题.但是,在Windows环境中进行开发时,它可以正常工作.

怎么解决这个?

更多信息

控制器:

File Name: MenuItemController.PHP
Class Name: MenuItemController

堆栈跟踪

#0 /../library/Zend/Controller/Front.PHP(954): Zend_Controller_dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),Object(Zend_Controller_Response_Http))
#1 /../library/Zend/Application/Bootstrap/Bootstrap.PHP(97): Zend_Controller_Front->dispatch()
#2 /../library/Zend/Application.PHP(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /../public/index.PHP(25): Zend_Application->run()
#4 {main}

请求参数

array (
  'action' => 'index','menu' => '2','controller' => 'MenuItem','parent' => 0,'id' => 0,)

解决方法

这是因为Windows不区分大小写且基于Linux的操作系统.

从ZendFramework手册:

Zend_Controller’s dispatcher then takes the controller value and maps
it to a class. By default,it title-cases the controller name and
appends the word Controller. Thus,in our example above,the
controller roadmap is mapped to the class RoadmapController.

这意味着MenuItemController.PHP和MenuitemController.PHP是两个不同的东西,因此自动加载器无法找到匹配项.

通常,在使用多字控制器时,只需确保只有类的第一个字母和控制器中的C大写.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...