Un site Web avec Laravel
Les étapes
Afficher tous les posts
Modifier le menu (view
interface.menu
) pour ajouter
Liste des articles
qui pointe vers l'action
PostController@index
.
Ajouter la route qui pointe vers l'adresse
/posts
et qui utilise l'action
index
du controller
PostController
.
Dans l'action du controller, récupérer tous les posts dans la variable
$posts
.
Appeler la view
posts.index
en lui envoyant les posts.
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>
Ne pas tester (ou bien tester et constater l'erreur). On doit lier les models.
Lier les models
Ouvrir les models
User
et
Post
.
Dans
Post
, ajouter la relation
belongsTo
pour le user :
public function user() {
return $this->belongsTo('
App\User
');
}
Dans
User
, ajouter la relation
hasHany
pour les posts :
public function posts() {
return $this->hasMany('
App\Post
');
}
Faire attention au pluriel du mot
post
s
.
Encore dans le model
User
ajouter la donnée virtuelle (calculée)
nomAdmin
qui génère
Raté, Rita
:
public function get
NomAdmin
Attribute() {
return $this->nom . ", " . $this->prenom;
}
Ajouter également la donnée virtuelle (calculée)
nomComplet
qui génère
Rita Raté
.
On peut également ajouter une donnée virtuelle qui retourne le nombre d'articles de cet auteur :
public function get
NbPosts
Attribute() {
return $this->posts()->count();
}
Afficher un seul post
Ajouter l'interface à la view index.
Ajouter la route qui pointe vers l'adresse
/posts/{post}
et qui renvoie à l'action
show
du controller
PostController
.
Adapter l'action du controller afin de recevoir un
$post
et non un
$id
(voir
UserController
).
Appeler la view
posts.show
en lui envoyant le post.
Créer la view
posts.show
.
Faire appel au component
interface.post
.
Fournir les informations pour les slots
titre
et
contenu
Déplacer la balise
div.meta
de la view
interface.post
vers
post.show
Adapter le lien vers l'auteur :
<a href="{{action('UserController@show', $post->user)}}">
{{$post->user->nomComplet}}
</a>
Faire afficher la date de modification du post.
Les posts d'un user
Suivre la vidéo