Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
depuis peu je me suis lancé dans l'aventure de migrer mon site en ZF1 vers ZF2 car la logique modulaire me plait bien.
Après plusieurs tentatives je n'arrive toujours pas à avoir un site opérationnel.
J'ai vérifié la config de la base de données et elle est ok, j'ai même essayé avec l'admin de la base dans les params et rien ne change.
Pouvez vous m'éclairer sur ce problème please ?
Pourquoi il me parle de readonly alors qu'il fait un select ? Je comprends rien.
Merci d'avance
File:
vendor/zendframework/zendframework/library/Zend/Db/Sql/Select.php:164
Message:
Since this object was created with a table and/or schema in the constructor, it is read only
Stack trace:
#0 vendor/ZfcUser/src/ZfcUser/Mapper/User.php(17): Zend\Db\Sql\Select->from('user') #1 vendor/ZfcUser/src/ZfcUser/Validator/AbstractRecord.php(104): ZfcUser\Mapper\User->findByEmail('mail@gmail.co...') #2 vendor/ZfcUser/src/ZfcUser/Validator/NoRecordExists.php(12): ZfcUser\Validator\AbstractRecord->query('mail@gmail.co...') #3 vendor/zendframework/zendframework/library/Zend/Validator/ValidatorChain.php(175): ZfcUser\Validator\NoRecordExists->isValid('mail@gmail.co...', Array) #4 vendor/zendframework/zendframework/library/Zend/InputFilter/Input.php(286): Zend\Validator\ValidatorChain->isValid('mail@gmail.co...', Array) #5 vendor/zendframework/zendframework/library/Zend/InputFilter/BaseInputFilter.php(195): Zend\InputFilter\Input->isValid(Array) #6 vendor/zendframework/zendframework/library/Zend/Form/Form.php(441): Zend\InputFilter\BaseInputFilter->isValid() #7 vendor/ZfcUser/src/ZfcUser/Service/User.php(68): Zend\Form\Form->isValid() #8 vendor/ZfcUser/src/ZfcUser/Controller/UserController.php(181): ZfcUser\Service\User->register(Array) #9 vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(87): ZfcUser\Controller\UserController->registerAction() #10 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) #11 vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #12 vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(208): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #13 vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php(108): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #14 vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php(113): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response)) #15 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) #16 vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #17 vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(208): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #18 vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(297): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #19 public/index.php(12): Zend\Mvc\Application->run() #20 {main}
Dernière modification par asnodj (27-10-2012 16:44:18)
Hors ligne
J'ai trouvé pourquoi cela ne marche pas.
Dans le fichier :
vendor/zendframework/zendframework/library/Zend/Db/Sql/Select.php
dans le constructeur on trouve cela :
[lang=php] /** * Constructor * * @param null|string $table */ public function __construct($table = null) { if ($table) { $this->from($table); $this->tableReadOnly = true; } $this->where = new Where; $this->having = new Having; }
Comme vous pouvez le voir, le contructeur sette la variable tableReadOnly à true .
Quelqu'un pourrait m'expliquer l'utilité de ce truc ?
En le changeant à false tout se met à marcher mais je voudrais quand-même comprendre le pourquoi.
Hors ligne
Salut, j'avoue ne pas trop connaitre Zend\Db par contre les fois où je me suis servi de ZfcUser je l'ai utilisé avec Doctrine et ça fonctionnait vraiment bien. Donc je ne peux que t'encourager d'aller vers cette solution.
Ca a quand même quelques impacts :
- Application légèrement plus lente mais par rapport à ZF1 au final ça sera plus rapide
- Pour avoir une architecture modulaire faut vraiment bien penser comment déclarer tes entités.
En contrepartie tu bénéficies de tous les avantages d'avoir un ORM
Hors ligne
Ok. Merci pour ton aide Orkin
J'ai une question concernant ZfcUser :
Quand j'ai créé mon utilisateur nommé asnodj il j'ai été redirigé sur l'index du controleur (user) et ce qui m'a énormément étonné est le fait qu'une image était associé à mon compte fraichement créé.
Cette image est mon avatar que j'utilise dans ce forum mais aussi sur d'autres comptes.
Comment il a trouvé cette image ? Est ce que ZfcUser fait appel à des webservices ?
Merci d'avance
Hors ligne
A confirmer mais ZfcUser doit utiliser Gravatar pour les avatars. Tu as du utiliser la même adresse mail de ce fait il a fait le lien . Tu as moyen de voir ce genre d'appel via firebug sous firefox par exemple. C'est un outil vraiment bien foutu si tu connais pas !
Pour la redirection vers l'index ça doit être configurable si ça te gêne.
Hors ligne
Merci encore pour l'info. La seule chose qui me dérangerai ce serait s'il va faire des inscriptions chez Gravatar ou autre.
Pour Firebug, oui je connais, je vais faire un test avec. Je n'ai pas pensé à le faire.
Hors ligne
Non il ne va pas faire d'inscription chez Gravatar, il fait simplement une recherche. Sur Gravatar tu peux accéder à ton avatar avec une url du genre http://gravatar.com/monemail/avatar ou un truc dans le genre du coup c'est facile à implémenter et ça marche assez facilement.
Hors ligne
Orkin a écrit:
Salut, j'avoue ne pas trop connaitre Zend\Db par contre les fois où je me suis servi de ZfcUser je l'ai utilisé avec Doctrine et ça fonctionnait vraiment bien. Donc je ne peux que t'encourager d'aller vers cette solution.
Ca a quand même quelques impacts :
- Application légèrement plus lente mais par rapport à ZF1 au final ça sera plus rapide
- Pour avoir une architecture modulaire faut vraiment bien penser comment déclarer tes entités.
En contrepartie tu bénéficies de tous les avantages d'avoir un ORM
Y aurait-t-il un tuto pour uitiliser Zfcuser avec doctrine ?
Hors ligne
Regarde du côté de ZfcUserDoctrineORM aussi .
Hors ligne