Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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,
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
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
(...) 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
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.
Hors ligne
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
Je viens de tester ce code et effectivement, j'ai cette fois ci j'ai un seul enregistrement.
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
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
Pages: 1