2011-07-19 67 views
2

我创建了一个类扩展Zend_Controller_Action,并添加了一些用户定义的方法,这些方法可以从任何控制器访问。扩展Zend_Controller_Action的类,Zend Tool找不到

每件事情都很好,直到我用Zend Tool创建一个新的Action,因为这次Zend工具不会找到我的扩展类。

错误消息:

Fatal error: Class 'CMS_Zend_Controller_Action' not found in....

也就是说其延伸Zend_Controller_Action类和一个由其它控制器等indexController延长。

如何让该类可被发现。我是否必须包括每个文件夹,就像我的课程一样? zend会这么做吗?我不这么认为。它是如何做到的?

+0

您的应用程序中的CMS_Zend_Controller_Action位于何处?我还建议不要在你的类名中包含'Zend' - 这个约定将会使用你自己的命名空间而不是'Zend'这个单词,除此之外。所以你应该有CMS_Controller_Action。 –

+0

@Tim Fountain,我正在扩展Zend_Controller_Action,所以我更愿意指出这一点。也因为,我也有我自己的CMS_Controller_Action – Starx

+0

只是一个确认:我能够在Windows上使用Netbeans + Zend Framework支持来复制它。在调试时,我意识到Zend_Tool不使用应用程序引导机制(至少在我测试这个时)。 – madflow

回答

0

简单。 :-p如果它可以找到你的核心控制器,那么你只需要包含扩展控制器的路径。

http://php.net/manual/en/function.set-include-path.php

在你的index.php set_include_path(path_to_your_extended_classes),又名路线文件。

+0

我在我的问题中也提到过这个问题。我觉得这个选项非常有限。因为我将不得不包括每个需要的文件夹。如果我必须这样做,我想知道是否有方法可以提及将每个文件夹包含在文件夹中。顺便提一下,Zend框架做的是什么,set_include_path是每个库文件夹。 – Starx

+0

@Starx它将递归查找文件夹。所以设置包含路径'a /'也会包含'a/b','a/b/c','a/d'等等。试试吧。这将需要不到几分钟的时间。 – FinalForm

+0

在这种情况下,它已经包含了'set_include_path(implode(PATH_SEPARATOR,array( realpath(APPLICATION_PATH。'/ ..)/ library'), get_include_path(), )));'包含CMS和Zend的所有库都包含在这个文件夹中 – Starx

0

我想你在这里尝试的不是Zend_Tool的功能。

尽管我理解你的问题和设置,你已经在你的图书馆中创建了一个类。当然,您可以在自己的库/库中使用许多自己的类来扩展Zend_Controller_Action(我也是这样做的)。为这样的类添加一个动作可能并不常见,但是出于某个特定原因Zend_Tool存在问题。

Zend_Tool我相信只是像/application这样的众所周知的结构和/modules里面的相同。如果你创建一个控制器类Zend_Tool将为你做一些工作,比如将你需要的文件夹结构添加到你的/application/modules文件夹中。与需要查看文件的操作方法相同。在你的库中有一个Controller类没有(不应该)需要所有这些,因此不会构建到Zend_Tool中。我认为你的库中创建的任何类在Zend_Tool中都不受支持。