netzmacht/contao-form-bundle

Contao CMS 使用 Symfony 表单的表单包

资助包维护!
dmolineus

安装次数: 1,028

依赖: 2

建议者: 0

安全: 0

星标: 7

关注者: 4

分支: 3

开放问题: 3

类型:contao-bundle

2.0.0 2022-08-17 08:23 UTC

README

此扩展使您在 Contao 项目中能够使用 Symfony 表单的功能。

其目的不是(还)完全替代 Contao 核心表单处理,而是使您能够在使用表单配置(表单生成器,数据容器)时在自己的应用程序中使用。

功能

  • 在应用程序中启用 symfony 表单组件
  • 提供基于后端的 FormGeneratorType 以使用表单
  • 提供 HtmlType 以向表单添加纯 HTML
  • 提供后端表单主题
  • 为小部件添加选项,允许定义 classfe_classbe_class CSS 属性

表单生成器

如果您想使用表单生成器来配置您的 symfony 表单,您可以这样做。此扩展提供 FromGeneratorType。

使用方法

// Symfony form generator, provided as service form.factory
$form = $formFactory->create(Netzmacht\ContaoFormBundle\Form\FormGeneratorType::class, null, ['formId' => 5]);

// That's all. Now you can use a symfon form having your form generator form fields.

DCA 表单

如果您想根据数据容器数组创建表单,您可以这样做。该扩展提供 DcaFormType。

使用方法

// Symfony form generator, provided as service form.factory
assert($dc instanceof Contao\DataContainer);
$form = $formFactory->create(
    Netzmacht\ContaoFormBundle\Form\DcaFormType::class, 
    null, 
    ['dataContainer' => 'tl_content', 'fields' => ['text'], 'driver' => $dc]
);

注意 对 dca 表单的支持是实验性的,可能存在一些意外问题。强烈建议传递数据容器驱动程序,因为回调可能需要它们。目前支持以下类型:

  • 复选框
  • 密码
  • 单选按钮
  • 选择框
  • 文本
  • 多行文本框

后端表单主题

此扩展还为 Contao 后端提供表单主题。您可以在使用表单的 twig 模板中启用它

{% form_theme form '@NetzmachtContaoForm/form/contao_backend.html.twig' %}
{{ form(form) }}

CSS 属性

在表单主题内部,您可以使用额外的类来添加特定样式,这通过 FormType 中的 contaoWidget 选项完成,其中有一个通用键 class 和前端特定键 fe_class 以及后端特定键 be_class

$builder
    ->add(
        'field',
        FieldType::class,
        [
            'contaoWidget' => ['class' => 'generic-class', 'be_class' => 'clr w50', 'fe_class' => 'frontend-class'],
        ]
    )

输入过滤

请注意,默认情况下会绕过 Contao 输入清理。如果您需要过滤数据,尤其是在使用它时(例如,Contao 模板)处于旧环境中,您可以使用提供的输入过滤器 Netzmacht\ContaoFormBundle\Filter\ContaoInputFilter 进行过滤,该过滤器作为服务 netzmacht.contao_form.input_filter 提供。

上传处理程序

默认情况下,上传的文件作为 UploadedFile 实例在表单数据中可用。如果您想根据表单字段配置的设置应用,您可以使用提供的 Netzmacht\ContaoFormBundle\Form\FormGenerator\UploadHandler 类,该类作为服务 netzmacht.contao_form.form_generator.upload_handler 提供。

路线图

  • 支持流行的第三方表单字段

已知限制

  • 不支持的表单字段在表单生成器中会被忽略
  • 带有图像的提交按钮不受支持。