Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu][Jelix 1.1.2] Gestion erreur sur saveToDao

Posted by Yann.L on 05/06/2009 11:33

Bonjour,

Je tente de gérer une erreur suite a un $form->saveToDao

Voila comment je m'y suis pris :

Dans l'action de mon contrôleur je fais :

    function save(){
        ... 
        try {
            $form->saveToDao('emplacement~vivier');
        } catch (jException $e) {
            jMessage::add($e->getMessage());
        }
        
        $rep = $this->getResponse('redirect');
        $rep->action = "emplacement~vivier:end";
        $rep->params = array('vivierId' => $this->param('fk_vivierId'));
        return $rep;
    }

Seulement voila quand je test pour lever une erreur j'ai le droit quand même a l'affichage d'erreur comme :

 [warning 2] mssql_query() [<a href='function.mssql-query'>function.mssql-query</a>]: message: Violation of PRIMARY KEY constraint 'PK__r_vivier_has_emp__4BAC3F29'. Cannot insert duplicate key in object 'dbo.r_vivier_has_emplacement'. (severity 14) C:\xampp\htdocs\jlx\tpgs\plugins\db\mssql\mssql.dbconnection.php 128

 [warning 2] mssql_query() [<a href='function.mssql-query'>function.mssql-query</a>]: Query failed C:\xampp\htdocs\jlx\tpgs\plugins\db\mssql\mssql.dbconnection.php 128

Là c'est typiquement le cas où l'utilisateur affecte un collaborateur à un site au quel il est déjà affecté.

Et quand je fais un retour arrière avec mon navigateur l'erreur est correctement affiché par jMessage.

Dois je faire un test avant le saveToDao() sur l'existence ou non des informations a enregistrer ? Ou bien j'ai mal utilisé jException ?

Merci & Bon dev

  [Opened] Re: [Jelix 1.1.2] Gestion erreur sur saveToDao

Reply #1 Posted by laurentj on 05/06/2009 11:39

Salut,

les warning en questions sont généré par les fonctions en questions, et ce ne sont pas des exceptions. Je ne peut rien y faire sauf à mettre des @ dans le driver mssql peut etre.

Dois je faire un test avant le saveToDao() sur l'existence ou non des informations a enregistrer ?

ça me parait logique de le faire en tout cas...

  [Opened] Re: [Jelix 1.1.2] Gestion erreur sur saveToDao

Reply #2 Posted by Yann.L on 05/06/2009 14:21

En faite je crois que j'avais mal lu la doc sur jForm et la méthode saveToDao()

Tout comme il y a initFromDao pour initialiser le formulaire, il y a l'opération inverse saveToDao. Cette méthode permet donc d'enregistrer plusieurs champs via un dao. Les valeurs des champs dont les noms correspondent à des propriétés du dao indiqué seront utilisées pour renseigner les propriétés du dao correspondantes, et le tout sera enregistré dans l'enregistrement dont la clé est indiquée dans l'id du formulaire. Si l'id du formulaire est inexistant, un nouvel enregistrement sera créé, plutôt qu'une mise à jour d'un enregistrement existant.

Je croyais avoir lu que saveToDao faisait le check tous seul de savoir si l'enregistrement existe ou pas ^^

Enfin merci quand même Laurent.

 
Page
  1. [Résolu][Jelix 1.1.2] Gestion erreur sur saveToDao