Не удается получить доступ к данным запроса из пост-запроса ajax в symfony 3

Я использую Symfony 3.4, и я хотел бы отправить некоторые данные в контроллер, но я не знаю, почему я не могу получить к ним доступ, как это показано в документации Symfony:

Это моя функция JS:

function sendQuantitiesToController() {

// Validate data
var validation = validateQuestionnaireReviewFormData();
if (validation === false) {
return false;
}
// Get form data
var data = getReviewFormComponentsData();
var id = document.getElementById('questionnaire-id').innerText;

// Send data
$.post("http://localhost:8000/questionnaire/"+id+"/review", {
components:              data.components,
optional_components:     data.optional_components
},
function(response, status) {
if (status == 'success') {
return true;
} else {
return false;
}
});

}

И это моя функция контроллера:

/**
* Questionnaire result review
*
* @Route("/questionnaire/{id}/review", name="_questionnaire_review", requirements={"id" = "\d+"})
* @Template()
*/
public function questionnaireReviewAction(Request $request, $id)
{

$form = $this->createForm(ResultOverviewType::class, $result);
$contactForm = $this->createForm(ContactType::class, $contact);
if ($request->isMethod('POST')) {
// Get data from request
$components = $request->request->get('components');
$optionalComponents = $request->request->get('optional_components');
...
}
}

return [
'form'              => $form->createView(),
'contactForm'       => $contactForm->createView(),
'questionnaire'     => $questionnaire
];
}

Шаблон веточки:

{{ form_start(contactForm, {'attr': {'onsubmit': 'return sendQuantitiesToController();'}}) }}
{{ form_widget(form) }}
{{ form_widget(contactForm) }}
{{ form_end(form) }}

Проблема в том, что $ request-> request-> get (‘components’) в контроллере всегда имеет значение null, но я проверил getReviewFormComponentsData () с console.log и там есть данные, поэтому проблема, вероятно, связана с пост-запросом ajax. Что я делаю не так? Может кто-нибудь мне помочь?

Спасибо за помощь!

-1

Решение

Чтобы получить данные запроса из ajax-запроса в Symfony Controller, вы должны просто сделать это:

public function questionnaireReviewAction(Request $request, $id)
{

$form = $this->createForm(ResultOverviewType::class, $result);
$contactForm = $this->createForm(ContactType::class, $contact);
if ($request->isMethod('POST')) {
// Get data from request
$data = $request->getContent();
$data = json_decode($data, true);

$components = $data['components'];
$optionalComponents = $data['optional_components'];
...
}
...
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector