Afficher une liaison BelongsToMany

Par Muxabble, il y a 10 ans


Hey ! J'aimerais afficher mes tags dans ma vue index, donc je fais naturellement $post->tag->name vu que j'ai une liaison BelongsToMany dans mon PostsTable, le soucis c'est qu'il me dit la classique erreur du non objet !

Trying to get property of non-object [APP/Template/Admin/Posts/index.ctp, line 55]

Dans mon controller j'ai

public function index() { $this->paginate = [ 'contain' => ['Tags'] ]; $this->set(compact('posts', $this->paginate($this->Posts))); $this->set('_serialize', ['posts']); }

Normalement tout devrais fonctionner à merveille ?!

1 réponse

Muxabble, il y a 10 ans

Erreur tout bête !
Finalement la solution c'est d'utiliser un foreach quand on y réfléchie c'est totalement logique ...

<?php foreach ($post->tags as $tag): ?> <?= $this->Html->link($tag->name,['controller'=>'Tags','action'=>'view','id'=>$tag->id]) ?> <?php endforeach ?>

Donc on lance le foreach pour récupérer tous les tags, et ensuite on utilise la clé pour récupérer ce que l'on souhaite ...
J'ai utiliser le debug(); pour comprendre que Cake récupérer sous forme de tableau x)