我正在尝试将this amazing calendar集成到我的项目中。我遇到服务问题。我正在使用这种结构:
application/
modules/
agenda/
controllers/
CalendarController.php
models/
services/
CalendarService.php
views/
filters/
helpers/
scripts/
calendar/
view-calendar.php
module2/
module3/
我以这种方式在我的application.ini中路由它:
resources.router.routes.agenda.route = /apps/agenda/
resources.router.routes.agenda.defaults.module = agenda
resources.router.routes.agenda.defaults.controller = calendar
resources.router.routes.agenda.defaults.action = view
我指着我的浏览器,我收到了这条消息:
Message: Invalid controller class ("Agenda_CalendarController")
我用我的Agenda_后缀修复了它并刷新了我的浏览器。获得了这个:
Message: Controller "Agenda_CalendarController" is not an instance of Zend_Controller_Action_Interface
所以我用“extends Zend_Controller_Action”实例化它。获得了这个: - )
Fatal error: Class 'Service_Calendar' not found in /home/[PATH TO MY APP FOLDER]/application/modules/agenda/controllers/CalendarController.php on line 30
我无法弄清楚出了什么问题。有人给我一两个暗示: - )
注意:我不知道这是否意味着什么,但是我使用NetBeans,如果我在控制器类中悬停类的服务方法时按CTRL;相关的弹出信息是正确的。
解决方案: 谢谢你们,你们给了我更进一步的道路。我的模块bootstraping设置不正确。根据你的提示,我从Bob Allen那里找到了这篇文章,他描述了同样的问题。
当你知道你在寻找什么......: - )
谢谢,我的问题已修复,我知道了一点!
答案 0 :(得分:1)
对于模型/服务/视图等,控制器的命名约定是不一样的,因为您不需要像控制器那样在文件名中添加类型。它们必须遵循基本的自动加载名称到路径架构。
因此,您服务的声明为:Agenda_Service_CalendarService
,因为它映射到modules/agenda/services/CalendarService.php
(请注意变形 - 从services
文件夹到_Service_
单数 - 那是ZF的工作,它也适用于模型。)
还要确保已正确初始化模块(具有自己的Bootstrap.php文件,在application.ini中设置)。
PS:NetBeans知道你的类在哪里,因为它扫描文件并查看声明,而不是该类的逻辑包含。