mcfedr/json-form

一些处理 json 与 symfony 表单的辅助文件

安装数量: 87,239

依赖项: 1

建议者: 0

安全性: 0

星标: 13

关注者: 4

分支: 7

开放问题: 1

类型:symfony-bundle

4.8.0 2022-02-21 09:22 UTC

README

简单地使用 JsonControllerTrait,然后像平常一样使用表单,但现在它们期望接收 JSON。

Latest Stable Version License Build Status

安装

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