prolic / humus-mvc
HumusMvc 将 ZF2 的 ModuleManager 和 ServiceManager 集成到 ZF1 应用程序中
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.*
- zendframework/zendframework1: 1.12.*
This package is auto-updated.
Last update: 2024-08-27 01:32:12 UTC
README
HumusMvc 在 ZF1 应用程序中集成了 Zend Framework 2 的 ModuleManager 和 ServiceManager。同时还有一个 HumusMvcSkeletonApplication。不再使用 Zend_Application。
依赖关系
安装
通常,您会在 HumusMvcSkeletonApplication 中安装 HumusMvc。如果您想遵循这些步骤,请查看 HumusMvcSkeletonApplication 的安装说明。
然而,您可以在自定义骨架应用程序中安装 HumusMvc
- 将
"prolic/humus-mvc": "dev-master"
添加到您的composer.json
- 运行
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"