如何在Zend Framework中启用我的模块?

4
我在我的Zend项目中创建了一个模块(person)。然后在该模块中创建了一个控制器(PersonController.php)。接着在该控制器中创建了一个操作(addAction)。但是,当我使用http://myproject.dev/person/person/add时,它什么也没有显示。 http://myproject.dev/指向我的Zend项目的公共文件夹,因此当我使用http://myproject.dev/时,它成功地显示了首页。但是对于我的模块来说,它不起作用。
我曾经看到过我们需要配置application.iniBootstrap.php来告诉Zend我们的模块目录,但我不知道怎么做。这些语句是什么?
我的当前目录结构如下:
zendproject|
           |-> application 
                          |-> models
                          |-> modules
                                     |-> person
                                               |->controllers
                                                              |-> PersonController.php 

您是否使用Zend_Tool创建了模块? - piddl0r
是的,我使用了Zend_Tool来创建模块、控制器甚至是操作。 - Awan
你的服务器配置是什么,例如LAMP/WAMP/Windows+IIS? - Ozair Kafray
@Ozair:我正在使用Wamp。 - Awan
4个回答

11

尝试做以下事情:
1)application.ini

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

2) 在每个模块中创建Bootstrap:

class Person_Bootstrap extends Zend_Application_Module_Bootstrap {
}

我的问题中有一个打字错误。我的模块文件夹在Zend的应用程序文件夹中。 - Awan

2

我认为你可以在你的 application.ini 文件中简单地添加模块配置:

resources.modules[] =

只是IT。


2

在Bootstrap中实现这个功能的代码如下:

$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->returnResponse(true);
$frontController->setControllerDirectory(
            array(
                'default' => '/path/to/application/controllers',
                'person' => 'path/to/application/person/controllers'
            )
        );
$response = $frontController->dispatch();
$response->sendResponse();

请参见http://framework.zend.com/manual/en/zend.controller.front.html,特别是查找子标题“setControllerDirectory()和addControllerDirectory”。

0
我不知道为什么,但是我只需添加下面这行代码才能使其正常工作:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接