Bonjour,

Je début en CakePHP et me voici confronté à un problème, il m'est impossible de récupérer un objet avec son id. Voici le code :

<?php
class MembersController extends AppController
{
    var $name = "Members";
    function index()
        {
            $this->set('members', $this->Member->find('all'));
        }
    function profile($id = null)
    {
        $this->Member->id_member = $id;
        $this->set('member', $this->Member->read());
    }
}
?>

Quand je veux accéder à mon objet, toutes mes valeurs sont nulles.

J'ai suivi l'exemple suivant du tuto de CakePHP :

<?php
class PostsController extends AppController {
    var $name = 'Posts';
    function index() {
         $this->set('posts', $this->Post->find('all'));
    }
    function view($id = null) {
        $this->Post->id = $id;
        $this->set('post', $this->Post->read());
    }
}
?>

Merci d'avance :)

2 réponses


Si dans ta fonction profile tu fais un debug($id) tu obtiens quoi

Il faut vérifier si ta recherche en BDD n'est pas vide avant de l'envoyer à la vue.
Essaies plutôt comme ceci pour récupérer via un id :

<?php
class MembersController extends AppController
{
    var $name = "Members";

    function index()
        {
            $this->set('members', $this->Member->find('all'));
        }

    function profile($id = null)
    {
        $member = $this->Member->findByIdMember($id);
        if(empty($member)){
            $this->Session->setFlash('Aucun Membre n\'est lié à cette ID');
            return $this->redirect(array('action' => 'index'));
        }
        $this->set(compact('member'));
    }

}
?>

(Je ne suis pas sûr du findByIdMember, dans le pire des cas, renomme ton champ id_member en id et fais un findById)

<?php
class PostsController extends AppController {

    var $name = 'Posts';

    function index() {
         $this->set('posts', $this->Post->find('all'));
    }

    function view($id = null) {
        $post = $this->Post->findById($id);
        if(empty($post)){
            $this->Session->setFlash('Aucun article n\'est lié à cette ID');
            return $this->redirect(array('action' => 'index'));
        }
        $this->set(compact('post'));
    }
}
?>