zend-framework - Zend Framework - 扩展模块 Controller

标签 zend-framework module zend-controller zend-autoloader

我有以下目录结构:

modules/
  api/
    controllers/
      ApiController.php
      InventoryController.php
      OtherController.php

init() 方法在多个 Controller 中很常见,因此我想将其重构为父 Controller 类,例如:
class Api_ApiController extends Zend_Controller_Action
{
    public function init()
    {
        // common code
    }
}

当我尝试:
class Api_InventoryController extends Api_ApiController

我得到:

Fatal error: Class 'Api_ApiController' not found in /application/modules/api/controllers/InventoryController.php on line 4



为什么 Zend Framework 不将 Api_ApiController 映射到 modules/api/controllers/ApiController.php?

我已经通过将 ApiController 放在 library/中并注册命名空间来解决这个问题,但这对我来说似乎是一个 hack。

最佳答案

“问题”是,ZF 没有在自动加载器中注册 Controller 目录,因为 Controller 通常是通过 Zend_Controller_Dispatcher 加载的。 . Zend_Application_Module_Autoloader ,另一方面,它在 Bootstrap 中实例化,仅寄存器

        'dbtable' => array(
            'namespace' => 'Model_DbTable',
            'path'      => 'models/DbTable',
        ),
        'mappers' => array(
            'namespace' => 'Model_Mapper',
            'path'      => 'models/mappers',
        ),
        'form'    => array(
            'namespace' => 'Form',
            'path'      => 'forms',
        ),
        'model'   => array(
            'namespace' => 'Model',
            'path'      => 'models',
        ),
        'plugin'  => array(
            'namespace' => 'Plugin',
            'path'      => 'plugins',
        ),
        'service' => array(
            'namespace' => 'Service',
            'path'      => 'services',
        ),
        'viewhelper' => array(
            'namespace' => 'View_Helper',
            'path'      => 'views/helpers',
        ),
        'viewfilter' => array(
            'namespace' => 'View_Filter',
            'path'      => 'views/filters',
        )

因此,您可以将基本 Controller 脚本包含在 require_once 中。或者你修改你的自动加载器以包括 Controller 目录。

关于zend-framework - Zend Framework - 扩展模块 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922803/

相关文章:

php - Zf3 Controller 无法访问位于另一个模块中的模型类表

zend-framework - Zend Framework - 我如何在 Controller 的一些 Action 之间共享通用代码?

带有 mysql 变量的 Mysql 查询在 Zend Framework 1 中不起作用

php - 如何防止两个用户注册相同的用户名?

mysql - 将lastInsertId返回给 Controller 并存储在Session中检索

ruby - 获取模块 ruby​​ 中定义的所有类

import - 如何使用 Cargo/Rust 在模块中包含同一目录中的文件?

javascript - Emit 未在 VueJS 中注册?

php - 在 PHP 和 Zend Framework 中使用 cofigs.ini 的优点?