Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Json Form Laravel Package

mcfedr/json-form

Symfony bundle/trait that lets controllers handle forms submitted as JSON. Use JsonControllerTrait to create and process JSON-backed forms, accepting payloads shaped like normal form fields, then validate and persist as usual.

View on GitHub
Deep Wiki
Context7

Json Form helper

Simply use the JsonControllerTrait and then use forms as you would normally, but they now expect to receive JSON.

Latest Stable Version License Build Status

Install

Composer

php composer.phar require mcfedr/json-form

AppKernel

Include the bundle in your AppKernel

public function registerBundles()
{
    $bundles = array(
        ...
        new Mcfedr\JsonFormBundle\McfedrJsonFormBundle()

JSON

The expected JSON will be just like that form values that would be sent.

Suppose you have the following form type

class AccountType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name');
    }

    public function getBlockPrefix()
    {
        return 'account';
    }
}

Then the JSON should be

{
    "account": {
        "name": "Fred"
    }
}

Example

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
        ]);
    }
}

For Symfony 3.x you will need to extend Controller because the trait needs access to getParameter method.

Contributing

To run the tests

./vendor/bin/php-cs-fixer fix
./vendor/bin/phpunit
./vendor/bin/phpstan analyse
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel