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
Auteur
Réponse acceptée

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)