【发布时间】:2018-01-04 07:34:35
【问题描述】:
我在这里需要一点指导。我正在使用 Codeigniter 3。
由于它是带有分段路由的 MVC fw,我想知道如何创建自定义路由,它将仅显示从数据库返回的 name 记录(可以是类别、产品、帖子等)而不是 @987654322 @当我需要id segment 来识别我需要从数据库中返回或预览哪个记录时id。
我将发布一些代码示例:
控制器
class Categories extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('CategoryM');
}
public function index(){
$data = array(
'category_list' => $this->CategoryM->listAll()
);
$this->load->view('test/category_list', $data);
}
public function preview()
{
$categoryId = $this->uri->segment(2);
$data = array (
'previewByCategory' => $this->CategoryM->previewByCategory($categoryId)
);
$this->load->view('public/preview_by_category', $data);
}
型号
<?php
class CategoryM extends CI_Model {
public function listAll() {
$query = $this->db
->select('*')
->from('categories')
->where('parentid', NULL, TRUE)
->order_by('name', 'asc')
->get();
if($query->num_rows() > 0) {
return $query->result();
}else{
return false;
}
public function previewByCategory($categoryId=''){
$query = $this->db
->select( /* posts and categories data */ )
->from('categories')
->join('posts', 'posts.categoryID = categories.id', 'left')
->where('categories.id', $categoryId)
->get();
if( $query->num_rows() > 0 ){
return $query->result();
}else{
return false;
}
}
}
查看
<?php if($category_list):?>
<?php foreach($category_list as $category):?>
<h3>
<a href="<?php echo base_url() . strtolower(url_title($category->name) . '/' . $category->id);?>">
<?php echo $category->name;?>
</a>
</h3>
<?php endforeach;?>
<?php endif;?>
我的路线
// Category routes
$route['categories'] = 'categories/index';
$route['(:any)/(:num)'] = 'categories/preview/$1';
我想要的不是路线
www.mywebsite/categoryname/categoryid/
只显示
www.mywebsite/categoryname
这将列出该类别组中的所有产品。但是如何在 url 中没有 id 的情况下执行此操作。如果我的问题太宽泛,我很抱歉。提前致谢。
【问题讨论】:
-
你可以这样做
categoryname如果这些只是唯一的 -
你是什么意思?要根据没有 id 的类别名称的值获取数据?
标签: php codeigniter url-rewriting routing