Rebonjour,

J'arrive bientôt à la fin de mon projet avec CakePHP et je me posais une question.

Est-il possible de mettre un message d'erreur ou de faire une redirection sur un article si celui-ci n'existe pas ?

Je m'explique avec un exemple car je ne dois pas être très clair :)

Si je tente d'accéder à : films/view/15 cela fonctionne car j'ai bien un film avec un id de 15, mais si je modifie l'url par films/view/50 cela me retourne une page comme les autres mais vide là où il devrait y avoir des valeurs... Logique car je n'ai pas de films avec un id de 50...

Comment pourrais-je procéder dans mon controller pour ne pas afficher cette page ?

Actuellement j'ai ceci dans mon controller films_controller.php :

function view($id = null){
                if (!$id) {
            $this->Session->setFlash(__('Film non valide', true));
            $this->redirect(array('action' => 'index'));
        }
}

Merci pour votre aide.

2 réponses


WoBuGs
Réponse acceptée

Tu pourrais faire la liste de tous tes films avec

$this->Model->find('list',array(
        "fields"=>"id"
));

et tester si $id est présent dans le tableau.

PS : je suis pas sur pour "fields"=>"id".

Bonne chance.

Innah
Auteur
Réponse acceptée

Merci pour ta réponse :)

Finalement, j'ai fait ça à la mode bourrin :

Dans ma vue :

<?php if($film'Film']'id'] == ''):?>
            <?php header('Location: http://localhost/dvdlist/films/'); ?>
        <?php endif;?>

Si quelqu'un connait un autre moyen plus "propre" pour faire une redirection directement dans une vue, je suis preneuse :)

Merci et bonne soirée.