netzmacht / contao-form-bundle
Contao CMS 使用 Symfony 表单的表单包
Requires
- php: ^7.4 || ^8.0
- beberlei/assert: ^2.0 || ^3.0
- contao/core-bundle: ^4.13
- netzmacht/contao-toolkit: ^3.8
- psr/log: ^1.1
- symfony/config: ^4.4 || ^5.1
- symfony/dependency-injection: ^4.4 || ^5.1
- symfony/filesystem: ^4.4 || ^5.1
- symfony/form: ^4.4 || ^5.1
- symfony/http-foundation: ^4.4 || ^5.1
- symfony/http-kernel: ^4.4 || ^5.1
- symfony/options-resolver: ^4.4 || ^5.1
- symfony/security-csrf: ^4.4 || ^5.1
- symfony/translation-contracts: ^1.1 || ^2
- symfony/validator: ^4.4 || ^5.1
- twig/twig: ^3.0
- webmozart/path-util: ^2.3
Requires (Dev)
- contao/manager-plugin: ^2.1
- doctrine/coding-standard: ^9.0
- phpcq/runner-bootstrap: ^1.0@dev
This package is auto-updated.
Last update: 2024-09-18 12:45:21 UTC
README
此扩展使您在 Contao 项目中能够使用 Symfony 表单的功能。
其目的不是(还)完全替代 Contao 核心表单处理,而是使您能够在使用表单配置(表单生成器,数据容器)时在自己的应用程序中使用。
功能
- 在应用程序中启用 symfony 表单组件
- 提供基于后端的 FormGeneratorType 以使用表单
- 提供 HtmlType 以向表单添加纯 HTML
- 提供后端表单主题
- 为小部件添加选项,允许定义
class
、fe_class
、be_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
提供。
路线图
- 支持流行的第三方表单字段
已知限制
- 不支持的表单字段在表单生成器中会被忽略
- 带有图像的提交按钮不受支持。