ansien / form-to-json-bundle
本包的最新版本(1.0.7)没有可用的许可证信息。
将 Symfony 表单转换为 JSON
1.0.7
2021-03-17 19:12 UTC
Requires
- php: >=8.0
- symfony/config: ^5.2
- symfony/form: ^5.2
- symfony/framework-bundle: ^5.2
- symfony/serializer: ^5.2
- symfony/translation: ^5.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- phpro/grumphp: ^1.3
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^5.2
- symplify/easy-coding-standard: ^9.2
README
此包允许您将 Symfony 表单转换为 JSON。
安装
您可以通过 Composer 安装此包
composer require ansien/form-to-json-bundle
用法
控制器
<?php declare(strict_types=1); namespace App\Controller; use Ansien\FormToJsonBundle\Transformer\Service\FormTransformerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use App\Entity\Example; use App\Form\ExampleType; class ExampleController extends AbstractController { public function __construct(private FormTransformerInterface $formTransformer) { } #[Route('/example', methods: ['GET'])] public function __invoke(Request $request): JsonResponse { $example = new Example('Hello!'); $form = $this->createForm(ExampleType::class, $example); return new JsonResponse($this->formTransformer->transform($form)); } }
示例输出
{ "schema": { "id": "test", "name": "test", "type": "super_form", "disabled": false, "label": null, "label_format": null, "label_html": false, "multipart": true, "unique_block_prefix": "_test", "row_attr": [], "translation_domain": null, "label_translation_parameters": [], "attr_translation_parameters": [], "valid": true, "required": true, "size": null, "label_attr": [], "help": null, "help_attr": [], "help_html": false, "help_translation_parameters": [], "compound": true, "method": "POST", "action": "", "submitted": false, "attr": [], "children": { "text": { "id": "test_text", "name": "text", "type": "text", "disabled": false, "label": null, "label_format": null, "label_html": false, "multipart": false, "unique_block_prefix": "_test_text", "row_attr": [], "translation_domain": null, "label_translation_parameters": [], "attr_translation_parameters": [], "valid": true, "required": true, "size": null, "label_attr": [], "help": null, "help_attr": [], "help_html": false, "help_translation_parameters": [], "compound": false, "method": "POST", "action": "", "submitted": false, "attr": [] } } }, "values": { "text": "Test 123" }, "errors": { "_global": [ "Test root error" ], "text": [ "Test error" ] } }
扩展包
您可以通过创建一个扩展 AbstractTypeTransformer 的新服务并使用标签 form_to_json_bundle.type_transformer
来创建自己的表单类型转换器。
变更日志
请参阅变更日志以获取最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
支持者
鸣谢
许可证
MIT 许可证 (MIT)。请参阅许可证文件以获取更多信息。