Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-01-2011 18:14:20

MatDevMX
Nouveau membre
Date d'inscription: 31-01-2011
Messages: 7

[Doctrine][1.11]Doublon lors de la sauvegarde d'un Doctrine_Record

Bonjour,

Voici mon problème, j'ai intégré dans mon projet Zend, Doctrine 1.2
Tous fonctionne parfaitement lors de la création des models, de la bases et des tables à partir du CLI.

Mais lorsque je veux effectuer un enregistrement en utilisant mes models tous fraichement générés et avec le code suivant,

Code:

public function indexAction()
{
    $user = new Application_Model_User();
    $user->login = "matdevmx";
    $user->passwd = "mypassword";
    $user->save();
}

Je me retrouve avec deux enregistrements dans ma table.
A chaque fois que je fais un save() sur un models un me créé un doublon.

Voici mon fichier de Bootstrap

Code:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    
    public function _initDoctrine()
    {
        $this->getApplication()->getAutoloader()
                    ->pushAutoloader(array('Doctrine','autoload'));
        
        spl_autoload_register(array('Doctrine','modelsAutoload'));
        $doctrineConfig = $this->getOption('doctrine');
        
        $manager = Doctrine_Manager::getInstance();
        $manager->setAttribute(Doctrine_Core::ATTR_VALIDATE,  Doctrine_Core::VALIDATE_ALL);
        $manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
        $manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
        $manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING,Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
        $manager->setAttribute(Doctrine_Core::ATTR_MODEL_CLASS_PREFIX,'Application_Model_');
        
        Doctrine_Core::setModelsDirectory(realpath(APPLICATION_PATH. '/models'));
        Doctrine_Core::loadModels($doctrineConfig['models_path']);
        
        
        $conn = Doctrine_Manager::connection($doctrineConfig['dsn']);
        $conn->setCharset('utf8');
        $conn->setCollate('utf8_general_ci');
        
        return $conn;
    }

et mon fichier de config

Code:

(...)
autoloaderNamespaces[] ="Doctrine"

doctrine.dsn                = "mysql://root:@localhost/db_doctrine_test"
doctrine.data_fixtures_path = APPLICATION_PATH "/doctrine/fixtures"
doctrine.sql_path           = APPLICATION_PATH "/doctrine/sql"
doctrine.migrations_path    = APPLICATION_PATH "/doctrine/migrations"
doctrine.yaml_schema_path   = APPLICATION_PATH "/doctrine/yml/schema.yml"
doctrine.models_path        = APPLICATION_PATH "/models"

doctrine.generate_models_options.pearStyle                  = true
doctrine.generate_models_options.generateTableClasses       = true
doctrine.generate_models_options.generateBaseClasses        = true
doctrine.generate_models_options.baseClassPrefix            = "Base_"
doctrine.generate_models_options.baseClassesDirectory       =
doctrine.generate_models_options.classPrefixFiles           = false
doctrine.generate_models_options.classPrefix                = "Application_Model_"

(...)

Merci d'avance.

Hors ligne

 

#2 31-01-2011 18:26:36

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Doctrine][1.11]Doublon lors de la sauvegarde d'un Doctrine_Record

Hello,

Tu es certain que c'est pas ton action de contrôleur qui est invoquée 2x ?

Essaie de mettre une trace dans ton action pour voir.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 01-02-2011 10:09:50

MatDevMX
Nouveau membre
Date d'inscription: 31-01-2011
Messages: 7

Re: [Doctrine][1.11]Doublon lors de la sauvegarde d'un Doctrine_Record

C'est aussi ce que je me suis dit mais je ne vois pas comment il pourrait appeler l'action 2 fois de suite, l'action index/index est la seul qui existe et il n'y a aucun forward ni redirect dans mon code.

Hors ligne

 

#4 01-02-2011 10:18:14

MatDevMX
Nouveau membre
Date d'inscription: 31-01-2011
Messages: 7

Re: [Doctrine][1.11]Doublon lors de la sauvegarde d'un Doctrine_Record

Je viens de tester ce code et effectivement, j'ai cette fois ci j'ai un seul enregistrement.

Code:

public function indexAction()
    {
        $table = Application_Model_UserTable::getInstance();
        $myuser = $table->findOneByLogin('matdevmx');
        if(!$myuser)
        {
            $user = new Application_Model_User();
            $user->login = "matdevmx";
            $user->passwd = "mypasswd";
            $user->save();
        }

    }

Ma question est donc maintenant comment puis je trouver l'origine du second appel à mon action index/index?

Dernière modification par MatDevMX (01-02-2011 10:18:38)

Hors ligne

 

#5 01-02-2011 10:38:53

MatDevMX
Nouveau membre
Date d'inscription: 31-01-2011
Messages: 7

Re: [Doctrine][1.11]Doublon lors de la sauvegarde d'un Doctrine_Record

Bon et bien j'ai résolu le problème. C'est tous simplement Webug - Version : 1.2.3 FirePHP extension for Google Chrome, qui me faisait un second appel à mon action, sans que je lui demande quoi que ce soit. Bizarre, car il me fait cet appel seulement avec ce site.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages