2010-12-05 23 views
0

私のCakePHPアプリケーションには、http://www.example.com/category/1のようなURLがあります。 categoryは、Websitesコントローラ内のアクションの名前です。 CakePHP Routesファイルを使用してコントローラ名を削除しました。 1は食品カテゴリーのIDで、レコードはデータベースから取得する必要があります。CakePHPルートのデータベースからデータを取得する

しかし、私のクライアントでは、より良いSEOのための数値IDなしでexample.com/category/FoodとしてURLを取得する必要があります。

私の質問は、CakePHPルートがデータベースからカテゴリIDの名前を取得してURLに表示できるかどうかです。はいの場合は、私がこれにひどく執着しているので、これを達成するために親切に私を導く。

ご協力いただきますようお願い申し上げます。あなたのルートの中にこのようなものかもしれない

答えて

0

:あなたのcategories_controllerに続いて

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

を::ビュー($ catName)、あなたはこれが当てはまりかどうかを確認します。

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

多くがあります。それに取り組む方法は、これは私が手を離して覚えているものです。

2

まずカテゴリテーブルにcategory_url_titleという名前のフィールドを作成します。そして、これはあなたを助けることを願っています

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')); 
} 

怒鳴るようなものになりますカテゴリーコントローラで次のルーティング

//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') 
    ) 
); 

とビューメソッドを追加します。

関連する問題