Skip to content
revollat edited this page Apr 3, 2015 · 18 revisions
           __            __
         /`_ \          / _`\
         |':\ \        / /:'|
          \':\ \      / /:'/
           \':\ \    / /:'/
            \':\ \  / /:'/
             \ `\ \/ /` /
              >        <
             /          \
           .'            '.
          /     0 __ 0     \
         >|   _   \/   _   |<
           \   \      /   /
            '._ '----' _.'
           /`  '. __ .'  `\
          |     |-. `|     |
         _\_(_(_/  \/\_)_)_/_
        / ` /\__/`\__/`\_\ ` \
       |   /    ()       (\   |
       |  ; (),    , () ,  ;  |
        ; |  /^\  /^\  /^\ | ;
         \|\/   \/   \/   \|/
          |  /`\  /`\  /`\ |
          ;\/   \/   \/ ()\;
          _\  ()          /_
     _.-'`  '._   ()   _.'  `'-._
   /`      .'` ``""""`` `'.      `\
   \_(_(,'`                `'.)_)_/

prog

Pour nettoyer les fichiers modifiés/ajoutés et etre au dernier commit sur la branche master, dans la ligne de commande executez :

git reset --hard && git clean -fd && git checkout master

Ajoutez un slash '/' devant les assets css :

<link rel="stylesheet" href="/css/pure-min.css">

Pensez aussi à modifier host et user dans src/app.php :

// Doctrine 
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'db.options' => array(
        'driver' => 'pdo_mysql',
        'host' => 'XXXXXXXXXXXXXXXXXXXXXX',
        'dbname' => 'c9',
        'port'     => 3306,
        'user' => 'XXXXXXXXXXXXXXXXXXXXXX',
        'charset' => 'utf8'
    ),
));

pour le host faites en ligne de commande mysql-ctl cli puis :

SHOW VARIABLES WHERE Variable_name = 'hostname';

Utilisez la valeur de hostname et faites exit pur revenir à la ligne de commande


  • Modifiez le contenu de la page cv cf. template pages/cv.html.twig, ajoutez un "lorem ipsum" ou n'importe quel contenu text/html dans le block contenu

  • Ajoutez une route "/goodies" à votre application

Dans src/routes.php, dupliquez le code du "contrôleur" de la page CV :

$app->get('/mon-cv', function () use ($app) {
    return $app['twig']->render('pages/cv.html.twig');
})->bind('cv');

Changez la route /mon-cv en /goodies

Créez le template pages/goodies.html.twig en s'inspirant de pages/cv.html.twig (n'oubliez pas de changer le nom du template et le "binding" (i.e. ->bind('cv')) dans le contrôleur que vous venez de créer.
Mettez le contenu que vous voulez dans le template pages/goodies.html.twig

  • Passez un tableau à la vue

Dans le contrôleur que vous avez créer, ajoutez un tableau que vous passez en paramètre à la "vue"

Ex.:

    $goodies = [
        "Stickers",
        "T-shirts",
        "what else ?"
    ];
  • Affichez les éléments dans la vue

à l'aide de la boucle for de twig (cf. doc. http://twig.sensiolabs.org/doc/tags/for.html)

  • Ajoutez la classe suivante dans src/Lpimash/Model/Realisation.php :
<?php
namespace Lpimash\Model;

class Realisation {
    
    protected $db;

    public function __construct(\Doctrine\DBAL\Connection $db){
        $this->db = $db;
    }
    
    public function getRealisations(){
        return $this->db->fetchAll('SELECT * FROM realisations');
    }
    
}

Dans src/app.php ajoutez :

$app['realisation'] = function ($app) {
    return new Lpimash\Model\Realisation($app['db']);
};
  • Modifiez la route realisations pour lister les réalisations :

Dans le contrôleur :

$realisations = $app['realisation']->getRealisations();

Passez cette variable à la vue et affichez la, Ex. :

<ul>
{% for realisation in realisations %}
    <li>{{ realisation.description }}</li>
{% endfor %}
</ul>
  • Faire une route pour une réalisation

Ajoutez la route

$app->get('/realisation/{id}', function ($id) use ($app) {
     
})->bind('realisation');
  • Ajoutez la méthode suivante dans la classe Realisation
public function getRealisation($id){
    return $this->db->executeQuery("SELECT * FROM realisations WHERE id_realisation = ?", array($id))->fetch();
}

Dans la route realisation ajoutez

$realisation = $app['realisation']->getRealisation($id);
return $app['twig']->render('pages/realisation.html.twig', array('realisation' => $realisation));
  • Créez le template correspondant (i.e. pages/realisation.html.twig)

Avec pour contenu du bloc contenu

{{ realisation.description }}

Testez avec votre URL Ex. : https://cours-o-revollat-2.c9.io/realisation/5 (remplacer avec VOTRE nom de domaine)

  • Dans le template d'une réalisation, ajoutez l'affichage des champs lien_image (avec une balise <img/>) et lien_realisation (avec une balise <a>)

  • Last but not least

Dans le template qui liste les réalisations (pages/realisations.html.twig) ajouter dans la boucle un lien vers chaque réalisation :

    {% for realisation in realisations %}
        <li><a href="{{ path('realisation', {id: ????????Guess what????????}) }}">{{ realisation.description }}</a></li>
    {% endfor %}
  • Question bonus : que sont les Opcodes PHP ? (explications en moins de 140 caractères)

real

Clone this wiki locally