早上好,我有经典的应用程序,我想从UserController扩展ArticleController,但是当我尝试时
class ArticleController extends UserController
{
// ...
}
或
class ArticleController extends Application_Controllers_UserController
{
}
我得到致命错误:上课......没找到...... 如何在Zend Framework中扩展一个控制器?
答案 0 :(得分:4)
控制器类名称的自动加载不是您在应用程序中可以访问的内容,或者除了在这种情况下有其他需要之外。
您需要手动包含/要求包含您希望扩展的控制器的文件。
<?php
require_once 'UserController.php'; // no adjustment to this path should be necessary
class ArticleController extends UserController
{
// ...
}
请注意,您的视图脚本仍将通过views / scripts / article而不是views / scripts / user提供。如有必要,您可以在每个操作中调整视图路径。
如评论中所述,您不必更改require_once语句的路径,但可以根据需要进行更改(例如require_once APPLICATION_PATH . '/modules/test/controllers/UserController.php';
)
答案 1 :(得分: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]访问它。
如果您有模块化应用程序,您可以将“应用程序”替换为您的模块名称,或者将其留空。