2010-12-05 75 views
0

我的CakePHP應用程序中有一個URL,類似於http://www.example.com/category/1。其中category是網站控制器中某個操作的名稱。我已經使用CakePHP Routes文件刪除了控制器名稱。 1是Food類別的id,它的記錄需要從數據庫中提取。在CakePHP中從數據庫獲取數據路由

但我的客戶要求我有url作爲example.com/category/Food,沒有數字ID爲更好的搜索引擎優化。

我的問題是,CakePHP路由可以從數據庫中獲取類別ID的名稱並將其顯示在url中?如果是的話,請親切指導我實現這一目標,因爲我對此非常不滿。

任何幫助將不勝感激。

回答

0

你可能有這樣的事情在你的路線:

Routes::connect('/category/*', array('controller' => 'categories', 'action' => 'view')); 
在categories_controller ::視圖($ 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的字段。然後在分類控制器添加以下路由

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

,並查看方法是什麼爲波紋管

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

希望這會幫助你。