Routes 在CakePHP路由中从数据库获取数据
我的CakePHP应用程序中有一个URL,看起来像。其中category是网站控制器中操作的名称。我已经使用CakePHP路由文件删除了控制器名称。1是食品类别的id,其记录需要从数据库中获取 但是我的客户要求我的url为example.com/category/Food,没有数字id,以便更好地搜索引擎优化 我的问题是CakePHP Routes能否从数据库中获取类别id的名称并在url中显示它?如果是的话,那么请引导我实现这一目标,因为我在这方面陷入了困境Routes 在CakePHP路由中从数据库获取数据,routes,cakephp-1.2,Routes,Cakephp 1.2,我的CakePHP应用程序中有一个URL,看起来像。其中category是网站控制器中操作的名称。我已经使用CakePHP路由文件删除了控制器名称。1是食品类别的id,其记录需要从数据库中获取 但是我的客户要求我的url为example.com/category/Food,没有数字id,以便更好地搜索引擎优化 我的问题是CakePHP Routes能否从数据库中获取类别id的名称并在url中显示它?如果是的话,那么请引导我实现这一目标,因为我在这方面陷入了困境 任何帮助都将不胜感激。您可以在您的
任何帮助都将不胜感激。您可以在您的路线中使用以下内容:
Routes::connect('/category/*', array('controller' => 'categories', 'action' => 'view'));
然后在categories_controller::view($catName)中检查这是否成立:
if($this->Category->hasAny(array('name' => $catName))) {
// your code here
} else {
// set message in the view saying category not found
}
有很多方法可以解决这个问题,这只是一个我记得很清楚的方法。首先在categories表中创建一个名为category\u url\u 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'));
}
希望这对你有帮助