2016-08-01 2 views
0

Hallo im bekommen versuchen, Daten zu meiner Methode in der Steuerung dend eine Ajax-Skript:, wie die Daten zu senden, senden Sie Ajax und es von einem symfony Controller

$("#form_enr").submit(function(ev) { 
    ev.preventDefault(); 

    var ev = $("#mySelect").val(); 
    var text =$("#form_Text").val(); 

    console.log(text); 
    console.log(ev); 

    $.ajax({ 
     type: "POST", 
     url: "{{ path('invitation_enregistrerInv')}}", 
     data : 'ev=' + ev + '&text=' + text, 
     success: function(data){ 
      $('.portlet-body').html(data);   
     } 
    });  

}); 

und es erhalte ich diese Syntax verwenden:

public function enregistrerInvAction() 
{ 
    $inv = new Invitation();  
    $em = $this->getDoctrine()->getManager(); 
    $request = $this->get('request'); 

    $ev = $request->request->get('ev'); 
    $text = $request->request->get('text'); 

    $inv->setCreatedAt(new \Datetime()); 
    $inv->setUpdatedAt(new \Datetime()); 
    $inv->setText($text); 

    $em->persist($inv); 
    $evenement=$em->getRepository('EvEvenementBundle:Evenement')->findById($ev); 
    $evenement=new Evenement(); 
    $evenement->setInvitation($inv); 
    $em->persist($evenement); 
    $em->flush(); 
    $this->addFlash(
     'success', 
     'Les informations ont été enregistrées!' 
    ); 

    return $this->redirect($this->generateUrl('invitation_index2')); 
} 

aber ich scheint nicht funktioniert, weil ich diesen Fehler haben:

An exception occurred while executing 'INSERT INTO invitation (created_at, updated_at, text) VALUES (?, ?, ?)' with params ["2016-08-01 17:12:55", "2016-08-01 17:12:55", null]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'text' ne peut être vide (null) !!! because text is null , and I don't get it

+0

verwenden Sie bitte ['Request' injection] (http://symfony.com/doc/current/controller.html#the-request-object-as-a-controller-argument) In deinen Controllern wurde "Request" im Container [veraltet zugunsten des Requeststacks] (http://symfony.com/blog/new-in-symfony-2-4-the-request) -stack) – NDM

+0

Ich versuchte nicht nur Ihren Vorschlag, sondern viele andere, es scheint ein ernstes Problem zu sein –

Antwort

0

Wie in der doc beschrieben here, können Sie versuchen:

// Better use the request passed on the controller's method signature 
$request = $this->get('request'); 

$ev = $request->request->get('ev'); 
$text = $request->request->get('text'); 

statt:

$request = $this->get('request'); 

$ev = $request->get('ev'); 
$text = $request->get('text'); 

Hope Diese Hilfe

+0

Hallo, habe ich Ihren Vorschlag versucht, aber es funktioniert nicht :( –

1

Ich glaube, dass Sie Ihre data falsch in js Seite passieren. Versuchen data zu, dies zu ändern:

$.ajax({ 
    (...) 
    data : { 
     ev: ev, 
     text: text 
    } 
});  

(Sie verwenden POST Methode, Sie sich nicht über Argumente in Query-String in dieser Methode)

EDIT:

Ihre Controller-Aktion sollte wie folgt aussehen :

public function enregistrerInvAction(Request $request){ 
    (...) 
    $text = $request->request->get('text'); 
    (...) 
} 

Sind Sie sicher, dass gültige Daten von Anfrage kommen? (Sie können versuchen, var_dump($_POST) zu tun)

+0

Hallo Ich habe Ihren Vorschlag versucht, aber es funktioniert nicht! –

+0

und hier ist ein Problem bei der Verwendung dieses Vorschlags: Uncaught SyntaxError: Unerwarteter Bezeichner –

+0

Sie müssen uns weitere Details geben Was ist genau der Fehler? Fügen Sie ganze Fehlerinformationen ein –

Verwandte Themen