flexmodel / flexmodel-bundle
Symfony 3+ 的 FlexModel 集成。
Requires
- php: ^5.5 | ^7.0
- ext-libxml: *
- ext-xsl: *
- doctrine/orm: ^2.5
- flexmodel/flexmodel: ^1.0
- ocramius/proxy-manager: ^1.0 | ^2.0
- symfony/console: ^2.8 | ^3.0
- symfony/form: ^2.8 | ^3.0
- symfony/framework-bundle: ^2.8 | ^3.0
- symfony/validator: ^2.8 | ^3.0
- twig/twig: ^1.24 | ^2.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- satooshi/php-coveralls: ^1.0
Suggests
- ezyang/htmlpurifier: Improves HTML sanitizing with the HTMLPurifierTransformer
README
Symfony 的 FlexModel 集成。
使用 Composer 安装
运行以下命令将包添加到项目的 composer.json 中
$ composer require flexmodel/flexmodel-bundle
启用包
在内核中启用包
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new FlexModel\FlexModelBundle\FlexModelBundle(), // ... ); }
配置包
将以下配置添加到您的 config.yml
文件中
# app/config/config.yml flex_model: bundle_name: AppBundle # optional, defaults to 'AppBundle' resource: "%kernel.root_dir%/../src/AppBundle/Resources/config/flexmodel.xml"
resource
应指向您的 FlexModel 配置文件的位置。
使用方法
生成 Doctrine ORM 映射
运行以下命令从您的 FlexModel 配置生成 Doctrine ORM 映射和实体类
$ php bin/console flexmodel:generate
在生成 Doctrine ORM 映射后,您需要更新您的数据库模式
$ php bin/console doctrine:schema:update --force
创建表单
要从 FlexModel 表单配置创建表单,您需要使用 FlexModelFormType
类。
该类将根据实体名称和提供的 'form_name' 选项检索表单配置。
// src/AppBundle/Controller/DefaultController.php public function newAction() { $entity = ...; $form = $this->createForm(FlexModelFormType::class, $entity, array( 'form_name' => '', )); }
有关创建表单的更多信息,请参阅 Symfony 文档。
文件上传
FlexModelBundle 提供了对 FlexModel 表单中文件上传的支持。
要激活此支持,您需要完成以下步骤
1. 为文件上传配置 FlexModelBundle
包需要一个位置来存储文件上传。使用您 config.yml
文件中的现有 FlexModelBundle 配置来配置此位置
# app/config/config.yml flex_model: resource: "%kernel.root_dir%/../src/AppBundle/Resources/config/flexmodel.xml" file_upload_path: "%kernel.root_dir%/../../some-directory-outside-of-the-project/%kernel.environment%"
2. 修改您的 Doctrine 实体类
要为 Doctrine 实体激活文件上传,您需要实现 UploadObjectInterface
并为表单字段添加获取器和设置器。
为了便于使用,FlexModelBundle 提供了一个 UploadTrait
来实现接口和获取器、设置器
namespace AppBundle\Entity; use FlexModel\FlexModelBundle\Model\UploadObjectInterface; use FlexModel\FlexModelBundle\Model\UploadTrait; class Entity implements UploadObjectInterface { use UploadTrait { getFileUpload as getImageUpload; setFileUpload as setImageUpload; getFileUpload as getAnotherImageUpload; setFileUpload as setAnotherImageUpload; } }
在上面的示例中,您可以看到实现了两个文件上传字段的 UploadTrait
和获取器、设置器。在这里,getImageUpload
方法映射到 FlexModel 字段 'image',而 getAnotherImageUpload
映射到 'another_image'。
致谢
许可证
此包受 MIT 许可证的许可。有关详细信息,请参阅 LICENSE 文件。