У меня проблема с вставкой данных в базу данных.
Я могу вставить, используя этот код:
$quote->setSource($data['quote_form[source]']);
$quote->setQuote($data['quote_form[quote]']);
Я хочу вставить данные без добавления определенных полей.
Проблемы:
- Проблема в моем первом коде заключается в том, что если я собираюсь добавить новое поле, мне нужно добавлять снова и снова новый набор.
- Когда я добавляю
if ($form->isSubmitted() && $form->isValid())
, он не входит в условие if.
Это код моей функции в контроллере:
public function createAction(Request $request)
{
if ($request->getMethod() === 'POST') {
$data = json_decode($request->getContent(), true);
$quote = new Quote();
$form = $this->createForm(QuoteForm::class, $quote)->submit($data);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
// Add our quote to Doctrine so that it can be saved
$em->persist($quote);
// Save our quote
$em->flush();
} else {
echo 'not valid';die();
}
return new Response('It\'s probably been saved', 201);
} else {
throw $this->createNotFoundException();
}
}
Для HTML Ajax:
function serializeFormJSON(formArray) {
var returnArray = {};
for (var i = 0; i < formArray.length; i++) {
returnArray[formArray[i]['name']] = formArray[i]['value'];
}
return returnArray;
}
var form = $('form[name=quote_form]');
form.submit(function (e) {
console.log(JSON.stringify(serializeFormJSON($(this).serializeArray())));
e.preventDefault();
$.ajax({
type: 'POST',
url: $(this).attr('action'),
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(serializeFormJSON($(this).serializeArray())),
dataType: 'json',
success: function(response) {
console.log(response);
},
});
});
У меня просто есть идея здесь
-> https://andrewadcock.com/a-simple-restful-api-tutorial-with-symfony-3/
-> https://symfonycasts.com/screencast/symfony-rest/form-post