4

早上好,我有经典应用程序,我想从 UserController 扩展 ArticleController,但是当我尝试

class ArticleController extends UserController
{
    // ...
}

或者

class ArticleController extends Application_Controllers_UserController
{

}

我收到致命错误:类...未找到...如何在 Zend 框架中从另一个控制器扩展一个控制器?

4

2 回答 2

4

控制器类名的自动加载不是您在应用程序中可以访问的,也不是非常需要的,除非在这种情况下。

您将需要手动包含/要求包含您希望扩展的控制器的文件。

<?php
require_once 'UserController.php'; // no adjustment to this path should be necessary

class ArticleController extends UserController
{
    // ...
}

请注意,您的视图脚本仍将来自视图/脚本/文章而不是视图/脚本/用户。如有必要,您可以调整每个操作中的视图路径。

如评论中所述,您不必更改 require_once 语句的路径,但您可以根据需要进行更改(例如require_once APPLICATION_PATH . '/modules/test/controllers/UserController.php';

于 2011-12-28T18:50:38.950 回答
1

您必须先正确初始化自动加载器,然后才能在 Bootstrap 中进行此类操作。特别是当您在 Zend 的标准控制器目录中扩展控制器时。

$namespace = 'Application';
$basePath = APPLICATION_PATH;
$autoloader = new Zend_Loader_Autoloader_Resource(array('namespace' => $namespace, 'basePath' => $basePath));
$autoloader->addResourceTypes(array('type' => 'controllers', 'path' => '/controllers', 'namespace' => 'Controller'));

现在您可以通过 Application_Controller_[YourControllerName] 访问它。

如果您有模块化应用程序,您总是可以用您的模块名称替换“应用程序”或将其留空。

于 2012-08-06T08:52:00.877 回答