bdelamatre / delamatre-zend
Byron DeLaMatre 创建的 ZF2 扩展
Requires
- doctrine/doctrine-module: ~1.2
- doctrine/doctrine-orm-module: ~1.1.1
- evandotpro/edp-module-layouts: 1.0
- geoip2/geoip2: ~2.4
- getresponse/getresponse: ~0.0.2
- google/apiclient: ~2.1
- khill/lavacharts: ~3.0
- lmammino/jsmin4assetic: ~1.0.0
- monolog/monolog: ~1.22.0
- natxet/cssmin: ~3.0.4
- neilime/zf2-twb-bundle: ~2.6
- studio-42/elfinder: ~2.1.20
- widmogrod/zf2-assetic-module: ~1.6
- zendframework/zendframework: ~2.5
- zf-commons/zfc-base: ~0.1
- zf-commons/zfc-user: ~1.4
- zf-commons/zfc-user-doctrine-orm: ~1.0.2
This package is not auto-updated.
Last update: 2020-01-10 16:06:00 UTC
README
一个预配置了以下内容的 Zend Framework 2 模块,以便为您的 Zend Framework 2 项目提供:
- 身份验证
- ZfcUser (ZfcUserDoctrineOrm)
- 数据库
- Doctrine ORM
- 前端
- 使用以下内容进行 Bower 编译
- jQuery
- Twitter Bootstrap
- Font Awesome
- Assetic
- (可选)Typekit
- 使用以下内容进行 Bower 编译
- 日志记录
- Monolog
- Zend Framework 扩展
- Mvc\Controller
- 表单
- 导航
- 视图
- 各种其他集成
- ElFinder
- GetResponse360
- Lavacharts
- Mashape
- Maxmind / GeoIP2
- PhantomJs
- SalesForce
关于
一组预配置的库、模块、资源、视图助手等,可用于快速启动您的 Zend Framework 2 项目。这对于任何希望使用 Zend Framework2 + DoctrineOrm + Twitter Bootstrap + jQuery 构建全栈应用程序的人来说将非常有用。如果您正在尝试将上述任何库集成到自己的 Zend Framework 2 项目中,您可能也会发现这个项目很有用作为参考。
入门
要开始,请将以下内容添加到您的 composer.json 中的 require 部分,然后更新 composer。
"bdelamatre/delamatre-zend": "dev-master",
并将以下脚本部分添加到您的 composer.json 中
"scripts": {
"post-install-cmd": "DelamatreZend\\Builder\\Builder::postInstall",
"post-update-cmd": "DelamatreZend\\Builder\\Builder::postUpdate"
}
然后您需要将以下模块添加到您的 ZF2 application.config.php 文件中。
'EdpModuleLayouts', #required by DelamatreZend 'TwbBundle', #required by DelamatreZend 'DoctrineModule', #required by DelamatreZend 'DoctrineORMModule', #required by DelamatreZend 'ZfcBase', #required by DelamatreZend 'ZfcUser', #required by DelamatreZend 'ZfcUserDoctrineORM', #required by DelamatreZend 'AsseticBundle', #required by DelamatreZend 'DelamatreZend', #DelamatreZend
项目结构
以下项目结构适用于您的 Zend Framework 2 项目,并模仿了 ZF2 Skeleton Application 目录结构。根据需要,您可以修改此结构。
- config/ - 包含 application.config.php
- config/autoload/ - 包含遵循 .local.php 和 .global.php 标准的配置文件。
- config/autoload/dist/ - 包含所有配置分发文件,您可以包括并配置它们。
- data/cache/ - 各种文件系统缓存的存储位置
- data/DoctrineORMModule/ - 实体代理和其他 Doctrine 缓存对象的存储位置
- data/log/ - 应用程序日志的存储位置
- data/log/screenshots/ - 截图缓存图像(PhantomJS)
- module/ - Zend Framework 2 模块
- public/ - 公共文件
- public/assets/ - 所有前端库和 Assetic 编译文件的存储位置。
- vendor/ - Composer 库
配置文件
本项目的主要目标是在众多类似项目中管理配置文件。因此,有许多不同的配置文件和特性允许与它们配置的类进行交互。无需复制或修改默认配置文件。
捆绑的配置文件
- assetic.*.php - 配置 Assetic
- doctrine.*.php - 配置 Doctrine ORM
- ext.filemanager.*.php - 配置elFinder文件管理器集成
- ext.getresponse.*.php - 配置GetResponse360集成
- ext.google.*.php - 配置Google集成
- ext.mashape.*.php -- 配置Mashape集成
- ext.maxmind.*.php -- 配置Maxmind (Geoip2)集成
- ext.phantomjs.*.php -- 配置PhantomJS集成
- ext.salesforce.*.php -- 配置SalesForce集成
- ext.typekit.*.php -- 配置Typekit集成
- myapp.*.php -- 配置应用程序信息
- navigation.*.php -- 配置导航菜单
- session.*.php -- 配置PHP会话
- user.*.php -- 配置身份验证 / ZfCUser
配置扩展
- .global.php - 一个全局配置文件
- .local.php - 一个本地配置文件,覆盖*.global.php文件。
- .dist - 配置文件的分发副本。
默认配置文件
为了启动您的项目,所有配置都有一个默认配置,该配置包含在config/目录下的此模块中。默认情况下,所有ext.*.php配置文件都被禁用,其余的配置与默认项目结构一起正常工作。
分发配置文件
对于每个默认配置文件,在config/autoload/dist/下都有一个相应的.global.php*.dist**和/或.local.php*.dist**文件。构建者会将所有这些分发文件复制到您的项目中的config/autoload/dist/。这些分发文件包含您可能想要修改以用于项目的值。要使用它们,只需将分发文件复制/粘贴到config/autoload/中,删除.dist扩展名,并根据需要修改。
注意:所需的.local.php配置文件(如database.local.php)将由构建者复制到/config/autoload/中。
myapp.*.php
与其它配置文件不同,myapp配置文件不配置任何特定的PHP类库。相反,这里使用的值用于描述一般、环境和其它应用程序特定设置。您应该使用myapp.global.php配置您的通用应用设置,并使用myapp.local.php配置您的开发环境设置。
开发环境下的myapp.development.local.php配置示例
return array( 'myapp' => array( 'environment' => array( 'type' => ENVIRONMENT_TYPE_DEVELOPMENT, 'notes' => 'to change to production, set [myapp][environment][type] to ENVIRONMENT_TYPE_PRODUCTION', 'display_errors' => true, 'display_exceptions' => true, ), 'baseurl' => 'https://', ), );
身份验证
ZfcUser (ZfcUserDoctrineOrm)
使用zf-commons/zfc-user和zf-commons/zfc-user-doctrine-orm进行集成。在composer install/update时,自动加载配置分发文件将被复制到config/autoload/dist/user.local.php.dist。默认情况下无需修改,但您可以将此文件移动到config/autoload/user.local.php并根据需要修改。
已创建一个默认的用户实体和组织实体,并作为用户配置中的默认实体相关联。其他配置包括在数据库中不存在用户时创建默认用户。
默认用户名/密码为root/root1234。
要覆盖默认用户/组织实体,只需扩展现有实体并更新user_entity_class和organization_entity_class用户配置选项。
在user.config.global.php中修改以下行
/** * User Model Entity Class * * Name of Entity class to use. Useful for using your own entity class * instead of the default one provided. Default is ZfcUser\Entity\User. * The entity class should implement ZfcUser\Entity\UserInterface */ 'user_entity_class' => '$yourEntityName', /** * Organization Model Entity Class */ 'organization_entity_class' => $yourEntityName',
内置控制器操作
与所有内置的ZfCUser操作相同。您可以在/user/login进行登录,在/user/logout进行注销。查看ZfcUser以获取其他操作和辅助工具。
需要身份验证
您可以使用内置的ZfcUser方法和在Module.php中添加要求,以实现应用中大量代码块需要身份验证。您也可以使用此简单方法对任何控制器操作要求身份验证
//require authentication $this->requireAuthentication();
可选地传递一个需要组数的数组
//require authentication $this->requireAuthentication(array('admin')); //must be an admin
控制器助手
当扩展AbstractActionController.php或应用User特性时,以下助手方法将在您的控制器中可用
- getUserClass() - 在user_entity_class中定义的用户类
- getOrganizationClass() - 在organization_entity_class中定义的组织类
- getZfcUserAuthentication() - zfcUserAuthentication插件
- getUserCount() - 数据库中用户数量
- getUserService() - 从服务管理器获取zfcuser_user_service
- createDefaultUser($userConfig) - 创建在用户配置中定义的默认用户
- requireAuthentication($allowedGroups) - 对指定的组进行身份验证。如果未登录,则重定向到登录页面。否则抛出异常。
构建器
一个简单的PHP类,包含静态函数,用作composer钩子,无需命令行。如果您尚未配置composer.json以使用构建器,请在composer.json中添加以下内容
"scripts": {
"post-install-cmd": "DelamatreZend\\Builder\\Builder::postInstall",
"post-update-cmd": "DelamatreZend\\Builder\\Builder::postUpdate"
}
构建器默认执行以下操作
- 设置所需的项目目录和权限
- 将配置分发文件复制到config/autoload/dist/和所需的本地文件config/autoload/
- 将公共资产复制到public/assets/
除了将钩子添加到composer.json之外,无需执行任何操作即可使用构建器。
数据库
Doctrine ORM
使用doctrine/doctrine-module和doctrine/doctrine-orm-module进行集成。在composer install/update时,自动加载配置分发文件将被复制到config/autoload/dist/doctrine.local.php.dist,并且(如果不存在)也将复制到/config/autoload/database.local.php。在此处插入您的数据库连接信息。
将DelamatreZend\Mvc\Controller\DoctrineIntegration特性应用于DelamatreZend\Mvc\Controller\AbstractActionController。此特性允许在控制器中轻松调用以下功能
- getEntityManager() - 获取默认实体管理器
- createQueryBuilder() - 创建查询构建器实例
- quoteSQL() - 为配置的数据库引用对象
默认的AbstractEntity为继承它的任何实体提供额外的功能。这些包括:魔法设置器/获取器、实体到数组和数组到实体函数等。
定义实体所在位置
建议将实体嵌入到您的模块中(例如,module/Application),以便您的模块是自给自足的。为了告诉Doctrine ORM您的实体位于模块中,您需要修改doctrine配置以包含存储实体的路径。再次建议,为了使您的模块自给自足,建议将以下内容添加到模块的module.config.php中。
将以下内容添加到module.config.php
//doctrine settings 'doctrine' => array( //Doctrine Entity settings 'driver' => array( // defines an annotation driver with two paths, and names it `my_annotation_driver` 'default_driver' => array( 'paths' => array( __DIR__ . '/../src/$moduleName/Entity', ), ), // default metadata driver, aggregates all other drivers into a single one. // Override `orm_default` only if you know what you're doing 'orm_default' => array( 'drivers' => array( // register `my_annotation_driver` for any entity under namespace `My\Namespace` '$moduleName\Entity' => 'default_driver', ) ) ), ),
doctrine.*.php
doctrine.local.php 是最重要的配置文件之一,因为它包含了您本地数据库连接信息。除非您需要添加多个数据库连接或修改实体位置,否则没有必要配置 doctrine.global.php。
前端
Bower 编译
bower.json 定义了jquery/bootstrap/font awesome项目的所需库。这些资源已经包含在 src/bower_components 中,但您可以在需要时运行 bower 和重新获取。
Assetic
使用 widmogrod/zf2-assetic-module 进行集成。在 composer install/update 时,自动加载配置分发文件将被复制到 config/autoload/dist/assetic.global.php.dist 和 config/autoload/dist/assetic.local.php.dist。如果不存在,则设置 config/autoload/assetic.local.php。要修改全局 Assetic 配置,请将文件重命名为 assetic.global.php 并按需修改。
默认情况下,所有公共资源都被假定为属于 public/assets/ 目录,Assetic 使用包含的 bower 资源来自动创建此目录中的 base_css.css 和 base_js.js 文件。这些基本文件包含 jQuery、Bootstrap 和 Font-Awesome 的编译和压缩代码。
fix-me:您需要将 bower_components 的内容复制到 public/assets/ 中,以便图像资源对 Bootstrap 和 Font-Awesome 可用。
Assetic 配置为自动将其资源添加到 ZF2 的样式和脚本对象中。要输出 Assetic 文件,您只需使用 headStyle() 和 headScript() 视图辅助函数。请参考 layout/layout.phtml 以获取工作示例。
assetic.*.php
Assetic 配置就绪,可直接使用。但是,当修改使用 Assetic 编译的源代码(即开发中)时,您可能希望启用 buildOnRequest 选项来自动编译基本文件。您可以使用 assetic.local.php.dist 文件来完成此操作。
视图 / 模板
- view/error/404.phtml - 默认 404 错误页面。
- view/error/index.phtml - 简单的默认错误页面。
- view/layout/ajax.phtml - AJAX 渲染策略的替代布局。
- view/layout/layout.phtml - 简单的默认布局。
- view/layout/components/* - 可用作部分的各种组件。
- view/layout/navigation/menu.phtml - ZF2 导航的巨量菜单渲染器。
- view/zfc-user/user/*.phtml - zfcuser 默认视图模板的覆盖。
Zend 框架扩展
表单
各种自定义表单元素。
Mvc\Controller
一个可扩展的 AbstractActionController,它提供额外的控制器帮助程序和集成。
- Doctrine 集成
- elFinder 文件管理器集成
- GetResponse360 集成
- Google Analytics 集成
- Lavacharts 集成
- Maxmind Geoip2 集成
- Salesforce 集成
- 身份验证集成
只需通过 DelamatreZend\Mvc\Controller\AbstractActionController 扩展控制器或根据需要应用任何可用的 trait 即可。
导航
在 composer install/update 时,自动加载配置分发文件将被复制到 config/autoload/navigation.global.php.dist。将此重命名为 navigation.global.php 并按需修改。
此扩展允许使用Doctrine实体动态生成导航菜单。已添加了额外的导航选项。
- entity - 要使用的doctrine实体
- entity_route - 从实体构建链接的ZF2路由。这不必与正常路由相同。
- depth - 构建此菜单项时递归的深度。
- col - 如果使用大型菜单(yamm),这将输出多少列。
查看
与任何开发者的库一样,已添加了一组自定义视图助手。