Skip to content
Advertisement

symfony don’t find post data after fetch

I am trying to send post data using fetch in twig. But I can not access to those variables in the controller.

here my fetch

let response = await fetch(baseUrl + '/aaa/nom-de-levenement/add', {
        method: 'POST',
        headers: {
            'X-CSRF-TOKEN': token,
            "Content-type": "application/json",
        },

        body: {
            "page": "pageName"
        }
    })
    return response.json()

and my controller :

/**
     * @Route("/add", methods={"POST"})
     */
    public function createPage($slug, EntityManagerInterface $entityManager, EventRepository $eventRepository, Request $request){

        $event = $eventRepository->findOneBy(['slug' => $slug]);

        $data = $request->request->get('page');

        dd($data);
}

And the dump returning null

Thank you for help

I tryied to change the content type in fetch dans some things in the controller for exemple :

$_POST return null

$request->get(‘page’) return null

I try the controller using postman, and it return the good variable.

Advertisement

Answer

To send POST data that way you should use FormData object:

const data = new FormData();
data.append('page', 'pageName');

let response = await fetch(baseUrl + '/aaa/nom-de-levenement/add', {
    method: 'POST',
    headers: {
        'X-CSRF-TOKEN': token,
        "Content-type": "application/json",
    },
    body: data
})
return response.json()

Then you could do that in your controller:

$data = $request->request->get('page');

If you try to pass “raw” data in body, you can access it using $request->getContent() method, but I believe in this case that will return "[object Object]" because the body object will be simply parsed to string.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement