Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'essaye d'utiliser Doctrine avec ZF 2.
J'essaye de commencer très simplement en affichant toutes les entrées d'une table.
Pour cela j'ai suivi les tutos sur internet...
J'ai crée une entity User dans le fichier Authentification/Entity/User.php
<?php namespace Authentification\Entity; use Doctrine\ORM\Mapping as ORM; use Zend\InputFilter\InputFilter; use Zend\InputFilter\Factory as InputFactory; use Zend\InputFilter\InputFilterAwareInterface; use Zend\InputFilter\InputFilterInterface; /** * A User table. * * @ORM\Entity * @ORM\Table(name="user") * @property string $login * @property string $password * @property int $id */ class User { /** * @ORM\Id * @ORM\Column(type="integer"); * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string") */ protected $login; /** * @ORM\Column(type="string") */ protected $password; /** * Magic getter to expose protected properties. * * @param string $property * @return mixed */ public function __get($property) { return $this->$property; } /** * Magic setter to save protected properties. * * @param string $property * @param mixed $value */ public function __set($property, $value) { $this->$property = $value; } } ?>
Dans le fichier /config/autoload/local.php j'ai mis :
<?php return array( 'doctrine' => array( 'connection' => array( 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'localhost', 'port' => '3306', 'user' => 'root', 'password' => '', 'dbname' => 'zf2tutorial', ) ) ) ), );
Dans le fichier module.config.php de mon module j'ai ajouté :
'doctrine' => array( 'driver' => array( __NAMESPACE__. '_driver' => array( 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 'cache' => 'array', 'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') ), 'orm_default' => array( 'drivers' => array( __NAMESPACE__.'\Entity' => __NAMESPACE__.'_driver' ) ) ) ),
Enfin voici la ligne qui plante dans ma classe MyAuthenticationProcess :
$users = $this->getEntityManager()->getRepository('Authentification\Entity\User')->findAll() ; var_dump($users) ;
Voici le code d'erreur :
<br /> <b>Fatal error</b>: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "layout/layout"; resolver could not resolve to a file' in xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:457 Stack trace: #0 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\View.php(201): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel)) #1 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\Mvc\View\Http\DefaultRenderingStrategy.php(126): Zend\View\View->render(Object(Zend\View\Model\ViewModel)) #2 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent)) #3 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(460): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) in <b>\xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php</b> on line <b>457</b><br />
Un peu dure à comprendre non ?
J'ai fait ma petite enquete en essayant de décomposer le problème...
J'ai d'abord essayé de voir si la connection avec la base de donnée à bien fonctionné. Pour cela j'ai simplement écris dans ma classe MyAuthenticationProcess :
$users = $this->getEntityManager()->getConnection() ; var_dump($users) ;
Et là j'obtiens la valeur null (mais pas d'erreur d’exécution) =S
Ai-je mal configuré doctrine ?
Ou est-ce normal d'obtenir une connection qui vaut null ?
Merci d'avance pour vos réponses.
Hors ligne
Salut, je suis désolé de te dire ça mais tu fais n'importe quoi ><.
Qu'est ce que viens faire ça dans ton entité ???
[lang=php] use Zend\InputFilter\InputFilter; use Zend\InputFilter\Factory as InputFactory; use Zend\InputFilter\InputFilterAwareInterface; use Zend\InputFilter\InputFilterInterface;
C'est une entité ? un formulaire ? Relis-toi !! C'est pas cohérent ton code, il y a des erreurs d'étourderie partout.
Corriges tes erreurs sur ta classe MyAuthenticationProcess avant d'aller plus loin ...
Ensuite j'aimerais savoir où tu as trouvé tes tutos pour doctrine ... Parce que c'est pas ceux de la documentation officielle qui sont très clair et bien foutu (pour une fois que ya de la bonne doc en plus).
Donc corriges moi déjà tout ça, sans essayer d'utiliser des trucs compliqué. Fais simple puisque tu débutes.
Pour ta première erreur c'est pas ta requête qui est en cause, il arrive simplement pas à récupérer ton layout pour l'afficher.
Hors ligne
J'ai trouvé ce code sur ce site Framework
J'essaye de comprendre comme je peux ce code et j'essaye de l'adapter selon le contexte de mon application.
Effectivement j'ai oublié de supprimer les use inutile.
Cela risque t'il vraiment de faire planter le code ?
Oui j'ai également lu le tutoriel officiel de Doctrine mais je n'ai pas trouvé de lien qui explique comment bien l'intégrer dans zend voilà pourquoi j'ai préféré en suivre un autre.
PS : J'ai trouvé d'où venait l'erreur c'est ma table qui n'avait pas exactement les mêmes champs que ma classe entity.
Hors ligne
Non les use inutiles ne font pas planter le code c'est juste pas très propre.
Tu peux trouver de la doc sur doctrine et le ZF 2 ici : https://github.com/doctrine/DoctrineORMModule
Hors ligne
Pages: 1