H2 - P2019

Développement web

Cours 37 - 2016-05-30

Silex

BDD

  • Actuellement, les contenus sont statiques
  • Nous allons créer une base de données et y relier le site
  • Il existe de nombreuses façons de se connecter à une BDD. Nous allons utiliser le service DoctrineServiceProvider, lui même utilisant PDO

Créer la base de données

  • Créez une nouvelle base de données via PhpMyAdmin
  • Importer la BDD fournie dans les ressources du cours précédent

Paramétrer Silex

  • Rajoutez le service suivant (sous les services déjà ajoutés)
    
    $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
        'db.options' => array (
            'driver'    => 'pdo_mysql',
            'host'      => 'localhost',
            'dbname'    => 'hetic_p2019_silex_pokedex',
            'user'      => 'root',
            'password'  => 'root',
            'charset'   => 'utf8'
        ),
    ));
    
    $app['db']->setFetchMode(PDO::FETCH_OBJ);
                                
  • Remplacez les informations classiques (host, dbname, user, password)
  • La première partie ne fait que rajouter le service DoctrineServiceProvider avec quelques paramètres dont la connexion
  • La deuxième partie spécifie le mode de récupération des données (objets)

Autrefois nous utilisions une variable appelée $pdo, maintenant nous utiliserons la variable $app['db']

Afin de bien organiser notre code en charge de gérer les données, nous allons créer un model

Créer le model

  • À côté du dossier view/, créez un dossier models/
  • À l'intérieur créez un fichier pokemons.class.php
  • Rajoutez-y le code suivant
    
    <?php
    
    class PokemonsModel
    {
        public $db;
    
        public function __construct($db)
        {
            $this->db = $db;
        }
    }
                                

Dans index.php

  • Sous l'autoload, faites un require_once du fichier pokemons.class.php
    
    require_once __DIR__.'/../models/pokemons.class.php';
                                
  • Après l'ajout des services, instanciez le model des pokemons sans oublier de lui passer $app['db'] en paramètre
    
    $pokemons_model = new PokemonsModel($app['db']);
                                

Dans pokemons.class.php, Créez une méthode getAll() qui renvoie tous les pokemons et utilisez-la dans la route pour l'envoyer à la vue