Un site Web avec Laravel

Les étapes

  1. Afficher tous les posts

    1. Modifier le menu (view interface.menu) pour ajouter Liste des articles qui pointe vers l'action PostController@index.
    2. Ajouter la route qui pointe vers l'adresse /posts et qui utilise l'action index du controller PostController.
    3. Dans l'action du controller, récupérer tous les posts dans la variable $posts.
    4. Appeler la view posts.index en lui envoyant les posts.
    5. Faire afficher une simple liste avec les titres des posts avec un lien.
      <ul>
      @foreach($posts as $post)
      <li>
      <a href="{{action('PostController@show', $post)}}">
      {{$post->titre}}
      </a>
      par <a href="{{action('UserController@show', $post->user)}}">
      {{$post->user->nomComplet}}
      </a>
      </li>
      @endforeach
      </ul>
    6. Ne pas tester (ou bien tester et constater l'erreur). On doit lier les models.
  2. Lier les models

    1. Ouvrir les models User et Post.
    2. Dans Post, ajouter la relation belongsTo pour le user :
      public function user() {
      return $this->belongsTo('App\User');
      }
    3. Dans User, ajouter la relation hasHany pour les posts :
      public function posts() {
      return $this->hasMany('App\Post');
      }

      Faire attention au pluriel du mot posts.

    4. Encore dans le model User ajouter la donnée virtuelle (calculée) nomAdmin qui génère Raté, Rita :
      public function getNomAdminAttribute() {
      return $this->nom . ", " . $this->prenom;
      }
    5. Ajouter également la donnée virtuelle (calculée) nomComplet qui génère Rita Raté.
    6. On peut également ajouter une donnée virtuelle qui retourne le nombre d'articles de cet auteur :
      public function getNbPostsAttribute() {
      return $this->posts()->count();
      }
  3. Afficher un seul post

    1. Ajouter l'interface à la view index.
    2. Ajouter la route qui pointe vers l'adresse /posts/{post} et qui renvoie à l'action show du controller PostController.
    3. Adapter l'action du controller afin de recevoir un $post et non un $id (voir UserController).
    4. Appeler la view posts.show en lui envoyant le post.
    5. Créer la view posts.show.
    6. Faire appel au component interface.post.
    7. Fournir les informations pour les slots titre et contenu
    8. Déplacer la balise div.meta de la view interface.post vers post.show
    9. Adapter le lien vers l'auteur :
      <a href="{{action('UserController@show', $post->user)}}">
      {{$post->user->nomComplet}}
      </a>
    10. Faire afficher la date de modification du post.
  4. Les posts d'un user

    1. Suivre la vidéo