Próbuję złożyć formularz za pośrednictwem ajax, aby zaktualizować pola danego podmiotu, ale nie wiem jak pobrać dane z kontrolera:Symfony2 wysłać formularz ajax
<form class="ajax" action="{{ path('ajax_setSocial') }}" method="post" {{ form_enctype(form) }}>
<div class="editor">
{{ form_errors(form) }}
<div class="editLabel pls">{{ form_label(form.ragSocial) }}</div>
<div class="editField">
<div class="ptm">
{{ form_widget(form.ragSocial) }} {{ form_errors(form.ragSocial) }}
</div>
{{ form_rest(form) }}
<div class="mtm">
<button class="btn btn-primary disabled save" type="submit">Save</button>
<button class="btn ann">Close</button>
</div>
</div>
</div>
var url = Routing.generate('ajax_setSociale');
var Data = $('form.ajax').serialize();
$.post(url,
Data
, function(results){
if(results.success == true) {
$(this).parents('ajaxContent').remove();
$(this).parents('.openPanel').removeClass('openPanel');
} else {
alert('False'); //test
}
});
kontroler (droga ajax_setSocial)
public function setSocialeAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
// $id = $request->get('form'); ???
$entity = $em->getRepository('MyBusinessBundle:Anagrafic')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Anagrafic entity.');
}
$form = $this->createFormBuilder($entity)
->add('ragSocial', 'text', array('label' => 'Social'))
->add('id', 'hidden')
->getForm();
$form->bind($request);
if ($form->isValid()) {
$em->persist($entity);
$em->flush();
$output = array();
$response = new Response();
$output[] = array('success' => true);
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
jako wartości odzysku i przekazać identyfikator do tworzenia zapytanie oraz inne wartości Zaktualizować encję? A jeśli pola nie przejdą procesu sprawdzania oryginalności, w jaki sposób mogę przekazać błąd?
Dziękujemy! To jest praca! – Lughino
Podążyłem za tym podejściem i działa. Wielkie dzięki. Mam tylko jeden problem, Kontroler wymaga podania wartości dla argumentu "$ id" (ponieważ nie ma wartości domyślnej lub ponieważ po niej występuje nie opcjonalny argument). Czy możesz mi pomóc z tym problemem? –
@whitelettersandblankspace w symfony2.3 możesz ustawić domyślną wartość w swoim kontrolerze, taką jak 'public function setSocialeAction (Request $ request, $ id = 1)'. W wersji 2.0 lub wcześniejszej (nie wiem) ustaw adnotację: '@Route ("/{id} ", name =" ajax_setSocial ", defaults = {" id "= 1})' – ihsan