2012-05-28 16 views
6

Come posso verificare se un record è stato inserito correttamente nel database utilizzando Doctrine in symfony2?Verificare che il record sia stato inserito correttamente in Symfony2

La mia azione nel controller è

public function createAction(){ 
    $portfolio = new PmPortfolios(); 
    $portfolio->setPortfolioName('Umair Portfolio'); 
    $em = $this->getDoctrine()->getEntityManager(); 
    $em->persist($portfolio); 
    $em->flush(); 
    if(){ 
     $this->get('session')->setFlash('my_flash_key',"Record Inserted!"); 
    }else{ 
     $this->get('session')->setFlash('my_flash_key',"Record notInserted!"); 
    } 
} 

Cosa devo scrivere nella dichiarazione if?

risposta

19

Si potrebbe avvolgere il controller in un blocco try/catch come questo:

public function createAction() { 
    try { 
     $portfolio = new PmPortfolios(); 
     $portfolio->setPortfolioName('Umair Portfolio'); 
     $em = $this->getDoctrine()->getEntityManager(); 
     $em->persist($portfolio); 
     $em->flush(); 

     $this->get('session')->setFlash('my_flash_key',"Record Inserted!"); 

    } catch (Exception $e) { 
     $this->get('session')->setFlash('my_flash_key',"Record notInserted!"); 
    } 
} 

Se l'inserimento non riesce, un'eccezione verrà generata e catturato. Probabilmente vorrai anche loggare il messaggio di errore all'interno del blocco catch chiamando in qualche modo $e->getMessage() e/o $e->getTraceAsString() che spiegherà l'eccezione.

+0

Come è possibile visualizzare div diverse in vista in caso di esito positivo o negativo dell'inserimento? –

+0

Aggiungi un messaggio flash con una chiave diversa - come setFlash ('insert_failed', 'Il tuo messaggio') e nel tuo modello di ramoscello fai qualcosa come {% se app.session.hasFlash ('insert_failed')%}

{{ app.session.flash('insert_failed') }}
{% endif% } –

+0

sì, l'ho fatto ... grazie ancora per la rapida risposta :) –

Problemi correlati