2010-12-05 12 views
0

J'ai une URL dans mon application CakePHP qui ressemble à http://www.example.com/category/1. Où catégorie est le nom d'une action dans le contrôleur de sites Web. J'ai supprimé le nom du contrôleur en utilisant le fichier CakePHP Routes. Et 1 est l'ID de la catégorie Food, dont les enregistrements doivent être extraits de la base de données.Récupérer des données de la base de données dans CakePHP Routes

Mais mon client me demande d'avoir l'URL comme example.com/category/Food, sans l'identifiant numérique pour un meilleur référencement.

Ma question est que CakePHP Routes peut-il extraire le nom de l'identifiant de catégorie de la base de données et l'afficher dans l'url? Si oui, alors veuillez me guider pour y parvenir, car je suis bloqué à ce sujet.

Toute aide sera grandement appréciée.

Répondre

0

Vous pourriez avoir quelque chose comme ça dans votre itinéraire:

Routes::connect('/category/*', array('controller' => 'categories', 'action' => 'view')); 

Puis dans votre categories_controller :: vue ($ catName), vous vérifier si cela est vrai:

if($this->Category->hasAny(array('name' => $catName))) { 
    // your code here 
} else { 
    // set message in the view saying category not found 
} 

Il y a beaucoup de façons d'aborder cela, c'est juste un que je me souviens des mains.

2

Commencez par créer un champ nommé category_url_title dans les tableaux de catégories. Puis ajouter les éléments suivants de routage

//Route dynamic pages 
Router::connect(
    '/categories/:category_url_title', 
    array('controller'=>'categories', 'action'=>'view'), 
    array(
     'category_url_title' => '(?!add|view|delete\b)\b[a-zA-Z0-9_-]+', 
     'pass'=>array('category_url_title') 
    ) 
); 
méthode

et vue dans le contrôleur Catégories sera quelque chose comme cela vous aidera ci-dessous

function view($category_url_title=null) { 

    $category = $this->Category->find('first', array('conditions'=> array('Category.category_url_title'=>$category_url_title))); 
    $this->set(compact('category')); 
} 

espoir.