mcfedr / json-form
一些处理 json 与 symfony 表单的辅助文件
4.8.0
2022-02-21 09:22 UTC
Requires
- php: >=8.0
- psr/container: ^1.0
- sensio/framework-extra-bundle: ^5.0|^6.0
- symfony/form: ^5.0|^6.0
- symfony/framework-bundle: ^5.0|^6.0
- symfony/validator: ^5.0|^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0|^3.0
- phpstan/phpstan-doctrine: ^0.12
- phpstan/phpstan-phpunit: ^0.12
- phpstan/phpstan-symfony: ^0.12
- phpunit/phpunit: ^9
- symfony/browser-kit: ^5.0|^6.0
- symfony/monolog-bundle: ^3.0|^4.0
- symfony/phpunit-bridge: ^5.0|^6.0
- symfony/yaml: ^5.0|^6.0
README
简单地使用 JsonControllerTrait
,然后像平常一样使用表单,但现在它们期望接收 JSON。
安装
Composer
php composer.phar require mcfedr/json-form
AppKernel
在您的 AppKernel 中包含此包
public function registerBundles() { $bundles = array( ... new Mcfedr\JsonFormBundle\McfedrJsonFormBundle()
JSON
期望的 JSON 将与要发送的表单值相同。
假设您有以下表单类型
class AccountType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name'); } public function getBlockPrefix() { return 'account'; } }
那么 JSON 应该是
{ "account": { "name": "Fred" } }
示例
class AccountController extends AbstractController use JsonControllerTrait; /** * @Route("/accounts", methods={"POST"}) */ public function accountCreateAction(Request $request, $uuid) { $account = new Account(); $form = $this->createJsonForm(AccountType::class, $account); $this->handleJsonForm($form, $request); $em = $this->getDoctrine()->getManager(); $em->persist($account); $em->flush(); return $this->json([ 'account' => $account ]); } }
对于 Symfony 3.x,您需要扩展 Controller
,因为特性需要访问 getParameter
方法。
贡献
要运行测试
./vendor/bin/php-cs-fixer fix ./vendor/bin/phpunit ./vendor/bin/phpstan analyse