idci/extra-form-bundle

Symfony 扩展包,用于扩展现有的 FormType 功能,以便允许动态表单生成

安装 65,184

依赖者: 1

建议者: 1

安全: 0

星级: 5

关注者: 12

分支: 1

开放性问题: 1

类型:symfony-bundle

v6.0.0 2022-11-25 18:07 UTC

README

ExtraFormBundle 是一个 Symfony 扩展包,扩展现有的 FormType 功能以允许动态表单生成。

此扩展包提供

  • 一个构建器,可以从配置数组生成表单。这允许您以任何可以转换为数组的格式(yaml、json 等)配置您的表单,并动态生成表单。
  • 一组现成的类型(iban、captcha 等),可直接使用。
  • 一个 API,公开所有 symfony 表单类型为 'extra form types'
  • 一个 API,公开所有 symfony 验证约束为 'extra form constraints'

SensioLabsInsight Build

安装

使用 composer 安装此扩展包

$ php composer require idci/extra-form-bundle:dev-master

导入扩展包配置

# app/config/config.yml

imports:
    - { resource: '@IDCIExtraFormBundle/Resources/config/config.yml' }

就是这样,您就可以使用 extra 表单构建器了。

使用编辑器

如果您需要 API 或编辑器

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\RestBundle\FOSRestBundle(),
        new JMS\SerializerBundle\JMSSerializerBundle(),
    );
}

启用序列化器

# app/config/config.yml

fos_rest:
    param_fetcher_listener: true # if you want to add configured types
    service:
        serializer: jms_serializer.serializer

导入路由

# app/config/routing.yml
extra_form:
    resource: "@IDCIExtraFormBundle/Controller/"
    type: annotation

安装资源

php bin/console assets:install --symlink

编辑器需要 Bootstrap 和 jQuery。如果您在项目中尚未使用它们,只需在视图文件中添加以下行即可。

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript" src="{{ asset('bundles/idciextraform/js/vendor/jquery-2.2.4.min.js') }}"></script>
    <script type="text/javascript" src="{{ asset('bundles/idciextraform/js/vendor/bootstrap.min.js') }}"></script>
{% endblock %}

{% block stylesheets %}
    {{ parent() }}
    <link rel="stylesheet" type="text/css" href="{{ asset('bundles/idciextraform/css/bootstrap.min.css') }}" />
    <link rel="stylesheet" type="text/css" href="{{ asset('bundles/idciextraform/css/bootstrap-theme.min.css') }}" />
{% endlbock %}

使用配置的类型

您可以通过编辑器注册配置的类型。它允许您访问预配置字段的类型。

在应用程序内核中注册 doctrine 扩展包

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
    );
}

然后更新 doctrine 架构。它将在数据库中创建一个表来注册配置的类型。

doctrine:schema:update --force

文档

进一步了解

测试

我们使用 dockerdocker-compose 运行测试,并附带一个 Makefile。

安装扩展包的开发依赖

$ make composer-update

执行单元测试

$ make phpunit