Slug sans ID

Par sylvain, il y a 11 ans


Bonjour, je voudrais savoir comment faire pour coder la gestion des slugs sans ID sous CakePHP ?

http://localhost/dev/1/page/mon-premier-titre

a la place de ce que l'on trouve dans le tuto de GA

http://localhost/dev/1/page/mon-premier-titre-1

3 réponses

antho07, il y a 11 ans

Bonjour,

il suffit de rendre ton champ slug unique en base et obligatoire. Tu requêtes ensuite dessus.

Inspirat, il y a 11 ans

Rien de bien compliqué, il suffit de modifier 3 fichiers, mais attention, chaque slug doit être unique pour que ça fonctionne bien, donc pense à vérifier lors de la création d'un article que le slug généré soit unique (et donc soit d'adapter le slug, soit d'avoir un nom d'article unique).

// app/Config/routes.php Router::connect('/article/:slug', array('controller' => 'posts', 'action' => 'view'), array( 'pass' => array( 'slug'), 'slug' => '[a-z0-9\-]+' ) ); // app/Controller/PostsController.php public function view($slug) { if(empty($slug)) { throw new NotFoundException(); } $post = $this->Post->find('first', array( 'conditions' => array('Post.slug' => $slug), )); if(!$post){ throw new NotFoundException(); } $this->set(compact('post')); } // app/View/posts/index.ctp <?= $this->Html->link(__('En savoir plus'), array('controller' => 'posts', 'action' => 'view', 'slug' => $post['Post']['slug'])); ?>
sylvain, il y a 11 ans

Merci beaucoup @inspirat