pitch/liform
Composer 安装命令:
composer require pitch/liform
包简介
Transform Symfony Forms into Json Schema
README 文档
README
Library for transforming Symfony Form Views into JSON.
It is developed to be used with liform-react-final, but can be used with any form rendering supporting JSON schema.
Installation
Install per Composer from Packagist.
composer require pitch/liform
If you execute this inside a Symfony application with Symfony Flex,
LiformInterface will be available per Dependency Injection right away.
Basic usage
$form = \Symfony\Component\Form\Forms::createFormFactory()->create(); $form->add('foo', \Symfony\Component\Form\Extension\Core\Type\TextType::class); $form->add('bar', \Symfony\Component\Form\Extension\Core\Type\NumberType::class); /* ... handle the request ... */ $resolver = new \Pitch\Liform\Resolver(); $resolver->setTransformer('text', new \Pitch\Liform\Transformer\StringTransformer()); $resolver->setTransformer('number', new \Pitch\Liform\Transformer\NumberTransformer()); /* ... */ $liform = new \Pitch\Liform\Liform($resolver); $liform->addExtension(new \Pitch\Liform\Extension\ValueExtension()); $liform->addExtension(new \Pitch\Liform\Extension\LabelExtension()); /* ... */ return $liform->transform($form->createView());
Inside a Symfony application
namespace App\Controller; /* use statements */ class MyFormController extends Symfony\Bundle\FrameworkBundle\Controller\AbstractController { protected LiformInterface $liform; /* Let the service container inject the service */ public function __construct(LiformInterface $liform) { $this->liform = $liform; } public function __invoke(Request $request) { $form = $this->createForm(MyFormType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { /* ... do something ... */ } else { return new Response($this->render('my_form.html.twig', [ 'liform' => $this->liform->transform($form->createView()), ]), $form->isSubmitted() ? 400 : 200); } } }
The result
The TransformResult is an object that when passed through json_encode() will produce something like:
{ "schema": { "title": "form", "type": "object", "properties": { "foo": { "title": "foo", "type": "string" }, "bar": { "title": "bar", "type": "number", } }, "required": [ "foo", "bar" ] }, "meta": { "errors": { "foo": ["This is required."] } }, "values": { "bar": 42 } }
Acknowledgements
This library is based on Limenius/Liform. Its technique for transforming forms using resolvers and reducers is inspired by Symfony Console Form.
pitch/liform 适用场景与选型建议
pitch/liform 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 241 次下载、GitHub Stars 达 3, 最近一次更新时间为 2020 年 05 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 pitch/liform 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 pitch/liform 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 241
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-05-06