prolic/humus-mvc

HumusMvc 将 ZF2 的 ModuleManager 和 ServiceManager 集成到 ZF1 应用程序中

1.2.0 2015-09-23 12:10 UTC

This package is auto-updated.

Last update: 2024-08-27 01:32:12 UTC


README

Dependency Status Total Downloads Latest Stable Version Latest Unstable Version

HumusMvc 在 ZF1 应用程序中集成了 Zend Framework 2 的 ModuleManager 和 ServiceManager。同时还有一个 HumusMvcSkeletonApplication。不再使用 Zend_Application。

依赖关系

安装

通常,您会在 HumusMvcSkeletonApplication 中安装 HumusMvc。如果您想遵循这些步骤,请查看 HumusMvcSkeletonApplication 的安装说明。

然而,您可以在自定义骨架应用程序中安装 HumusMvc

  1. "prolic/humus-mvc": "dev-master" 添加到您的 composer.json
  2. 运行 php composer.phar install

功能/目标

  • 添加使用服务定位器使用视图辅助器的可能性 [已完成]
  • 添加使用服务定位器使用动作辅助器的可能性 [已完成]
  • 添加使用服务定位器使用控制器插件的可能性 [已完成]
  • 使用服务定位器配置 Zend_Controller_Front [已完成]
  • 添加测试 [未完成]
  • 重构翻译服务 [已完成]
  • 创建 Zf1MvcListenerAggregate 并在这里收集所有 MVC 资源 [未完成]
  • 本地化 (Zend_Locale) 将在每次请求时创建并存储在注册表中 [已完成]
  • 基于事件的调度 [已完成]
  • 添加文档 [未完成]

视图辅助器

  • 当服务定位器中存在键为 "Translator" 的 Zend_Translate 或 Zend_Translate_Adapter 对象时,Zend_View_Helper_Translate 将注入翻译器。无需将 Zend_Translate 放入 Zend_Registry。
  • 当服务定位器中存在键为 "Navigation" 的 Zend_Navigation 或 Zend_Navigation_Container 对象时,将使用自定义的 HumusMvc\View\Helper\Navigation。此特殊视图辅助器将检查服务定位器中的导航对象,如果可用,则还会注入具有键 "Acl" 的额外 Zend_Acl 和具有键 "AclRole" 的 Zend_Acl_Role_Interface。对于键 "Translator" 下的翻译器也是如此。如果服务定位器中没有任何内容,则将使用默认的 Zend_View_Helper_Navigation。
  • 可以通过模块管理器进行配置:模块配置键 "view_helpers",模块类接口 "Zend\ModuleManager\Feature\ViewHelperProviderInterface" 和模块类中的方法 "getViewHelperConfig"

视图配置

module.config.php 中的示例视图配置

return array(
    'view' => array(
        'classname' => 'HumusMvc\View',
        'useViewRenderer' => true,
        'useStreamWrapper' => false,
        'doctype' => 'XHTML1'
    )
);

classname (可选):要使用的视图类。必须是 HumusMvc\View 的实例。useViewRenderer、doctype、contentType、assign 等是 Zend_View 的默认配置键

将特殊插件加载器 (HumusMvc\View\HelperPluginManager) 注入到视图对象中。

前端控制器配置

module.config.php 中的示例前端控制器配置

return array(
    'front_controller' => array(
        'controller_directory' => array(
            'test' => __DIR__ . '/../src/test/controllers' // key = name of module, value = path to controllers in this module
        ),
        'module_controller_directory_name'=> 'controllers',
        'base_url' => '/',
        'params' => array(
            'displayExceptions' => false, // true for development
            'disableOutputBuffering' => true
        ),
        'plugins' => array(
            'actionStack' => 'Zend_Controller_Plugin_ActionStack',
            'putHandler' => array(
                'class' => 'Zend_Controller_Plugin_PutHandler',
                'stack_index' => 10
            ),
        ),
        'throw_exceptions' => false,
        'return_response' => false,
        'default_module' => 'default',
        'default_action' => 'index',
        'default_controller_name' => 'index',
    )
);

controller_directory:键 = "ModuleName",值 = "该模块中控制器路径" plugins:键 = "PluginName",值 = "PluginClass" 或数组 (class 和 stack_index) - 如果插件已在服务定位器中注册,则将从服务定位器中加载插件,否则将简单地使用 "new" 实例化。base_url、params、module_controller_directory_name 等是前端控制器的默认配置键

将特殊插件加载器 (HumusMvc\Controller\Action\HelperPluginManager) 注入到动作控制器对象中。

动作辅助器可以通过模块管理器进行配置:模块配置键 "action_helpers",模块类接口 "HumusMvc\ModuleManager\Feature\ActionHelperProviderInterface" 和模块类中的方法 "getActionHelperConfig"