stakovicz/ux-collection
Composer 安装命令:
composer require stakovicz/ux-collection
包简介
UX Form Collection for Symfony Forms
关键字:
README 文档
README
Symfony UX Form collection is a Symfony bundle providing light UX for collection in Symfony Forms.
Installation
UX Form Collection requires PHP 7.2+ and Symfony 4.4+.
Install this bundle using Composer and Symfony Flex:
composer require stakovicz/ux-collection
# Don't forget to install the JavaScript dependencies as well and compile
yarn install --force
yarn encore dev
Also make sure you have at least version 2.0 of @symfony/stimulus-bridge
in your package.json file.
You need to select the right theme from the one you are using :
# config/packages/twig.yaml twig: # For bootstrap for example form_themes: ['@FormCollection/form_theme_div.html.twig']
You have 2 different themes :
@FormCollection/form_theme_div.html.twig@FormCollection/form_theme_table.html.twig
Check the Symfony doc for the different ways to set themes in Symfony.
Usage
The most common usage of Form Collection is to use it as a replacement of the native CollectionType class:
// ... use Symfony\UX\FormCollection\Form\CollectionType; class BlogFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('comments', CollectionType::class, [ // ... 'button_add' => [ // Default text for the add button 'text' => 'Add', // Default attr class for the add button 'attr' => ['class' => 'btn btn-outline-primary'] ], 'button_delete' => [ // Default text for the delete button 'text' => 'Remove', // Default class for the delete button 'attr' => ['class' => 'btn btn-outline-secondary'] ], ]) // ... ; } // ... }
Extend the default behavior
Symfony UX Form Collection allows you to extend its default behavior using a custom Stimulus controller:
// mycollection_controller.js import { Controller } from 'stimulus'; export default class extends Controller { connect() { this.element.addEventListener('collection:pre-connect', this._onPreConnect); this.element.addEventListener('collection:connect', this._onConnect); this.element.addEventListener('collection:pre-add', this._onPreAdd); this.element.addEventListener('collection:add', this._onAdd); this.element.addEventListener('collection:pre-delete', this._onPreDelete); this.element.addEventListener('collection:delete', this._onDelete); } disconnect() { // You should always remove listeners when the controller is disconnected to avoid side effects this.element.removeEventListener('collection:pre-connect', this._onPreConnect); this.element.removeEventListener('collection:connect', this._onConnect); } _onPreConnect(event) { // The collection is not yet connected console.log(event.detail.allowAdd); // Access to the allow_add option of the form console.log(event.detail.allowDelete); // Access to the allow_delete option of the form } _onConnect(event) { // Same as collection:pre-connect event } _onPreAdd(event) { console.log(event.detail.index); // Access to the curent index will be added console.log(event.detail.element); // Access to the element will be added } _onAdd(event) { // Same as collection:pre-add event } _onPreDelete(event) { console.log(event.detail.index); // Access to the index will be removed console.log(event.detail.element); // Access to the elemnt will be removed } _onDelete(event) { // Same as collection:pre-delete event } }
Then in your render call, add your controller as an HTML attribute:
$builder // ... ->add('comments', UXCollectionType::class, [ // ... 'attr' => [ // Change the controller name 'data-controller' => 'mycollection' ] ]);
stakovicz/ux-collection 适用场景与选型建议
stakovicz/ux-collection 是一款 基于 Twig 开发的 Composer 扩展包,目前已累计 327 次下载、GitHub Stars 达 6, 最近一次更新时间为 2021 年 04 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「ux-collection」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 stakovicz/ux-collection 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 stakovicz/ux-collection 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 327
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-28