Bonjour,
Je veux que chaque utilisateur a une page de profil. Je me suis inspiré du système de grafikart en mettant l'id dans l'url.

exemple/user/profil/1

le problème est que si des gens futé il pourrais mettre un id qui n'existe pas dans l'url. Je veux afficher une erreur qui dise qu'il y a aucun membre n'a cettte id.

j'ai essayer de mon coté avec le code suivant :

function profil($id = null){
        if(!$id){
            throw new NotFoundException('Aucun memebre ne correspond à cet ID');
        }
        $user = $this->User->find('first',array(
            'conditions' => array('User.id' => $id,'active'=>1)
        ));
        $d'User'] = $user;
        $this->set($d);
    }

Merci de votre aide en avance!

2 réponses


Maenhyr
Réponse acceptée

Bonjour, voici une réponse simple a ce problème.

function profil($id = null){
        // si il n'y a pas d'id ou qu'il est incorrect (un id commence par 1 en MySQL)
        if(!$id || $id < 1){
            throw new NotFoundException('Aucun memebre ne correspond à cet ID');
        }
        // on cherche le premier user possedant l'id desire
        $user = $this->User->find('first',array(
            'conditions' => array('User.id' => $id,'active'=>1)
        ));
        // si il n'existe pas de user, on renvoie une exception
        if(empty(user)) {
            throw new NotFoundException('Aucun memebre ne correspond à cet ID');
        }
        // sinon on recupere ce user et on le renvoie a la vue
        $d'User'] = $user;
        $this->set($d);
    }

Attention : cette solution permet aux utilisateurs d'avoir accès à un profil autre que le leur en entrant un id correct mais différent du leur.
Si les utilisateurs sont connectés et ne peuvent voir que leur profil, il ne faut pas entrer l'id dans l'url mais le récupérer depuis la session avec le composant Auth.

lakamark
Auteur
Réponse acceptée

Merci