如何使用slug?
以下示例将进行说明:
网址 - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/
1)假设您拥有一个产品页面,当然,产品页面需要从URL中获取一些数据以了解要显示哪个产品。
2)在此之前,我们使用从URL获取的ID查询数据库。但现在我们将执行相同的操作(查询数据库),只不过是用slug替换id。
3)因此,在您的数据库中添加一个名为slug的额外列。下面是您更新的产品数据库结构(仅供参考)。
Columns Values
id (int(11), PK) 1
title (varchar(1000)) Apple iPhone 5S 16GB
slug (varchar(1000)) apple-iphone-5S-16GB-brand-new
price (varchar(15)) 48000
thumbnail (varchar(255)) apple-iphone-5S-16GB-brand-new.jpg
description (text) blah blah
...
...
我以前也在slug上回答过。看看是否有帮助。
如何从CodeIgniter的URL中删除参数
编辑:
为此,您需要进行以下更改 -
1)创建以下2个表格
slug_table:
id (PK) | slug | category_id (FK)
category_table:
id (PK) | title | thumbnail | description
2) config/routes.php
2)config/routes.php
$route['/(:any)'] = "category/index/$1";
3) 模型/category_model.php(创建新文件)
class Category_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->db = $this->load->database('default',true);
}
public function get_slug($slug)
{
$query = $this->db->get_where('slug_table', array('slug' => $slug));
if($query->num_rows() > 0)
return $query->row();
return false;
}
public function get_category($id)
{
$query = $this->db->get_where('category_table', array('id' => $id));
if($query->num_rows() > 0)
return $query->row();
return false;
}
}
4) 控制器/category.php(创建新文件)
class Category extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('category_model');
}
public function index($slug)
{
$sl = $this->category_model->get_slug($slug);
if($sl)
{
$data['category'] = $this->category_model->get_category($sl->category_id);
$this->load->view('category_detail', $data);
}
else
{
}
}
}
5) views/category_detail.php(创建新文件)
<label>Category title: <?php echo $category->title; ?></label><br>
</label>Category description: <?php echo $category->description; ?></label>