我在Codeigniter中工作,我想从URL隐藏ID。
我当前的网址是:
www.localhost/CI/services/1/ac_repair
但在codeigniter中需要这种URL:
www.localhost/CI/services/ac_repair
查看页面代码:
<?=anchor('services/' . $ser->s_id . '/' . url_title($ser->s_title,'_') ,'View Service');?>
控制器代码:
public function services()
{
$this->load->model('ServicesModel', 'ser_model');
$s_id = $this->uri->segment(2, 0);
if($s_id){
$get_service = $this->ser_model->get_ser($s_id);
return $this->load->view('public/detail', compact('get_service') );
}
else
{
// $services = $this->articles->articles_list( $config['per_page'], $this->uri->segment(3) );
$get_services['result'] = $this->ser_model->all_services_list();
// $this->load->view('public/services', ['services'=>$services]);
$this->load->view('public/services', $get_services);
}
}
此处的模型代码:
public function get_ser($id)
{
// $q = $this->db
$q = $this->db->select('*')
->from('services')
->where( ['s_id' => $id] )
->get();
if ( $q->num_rows() )
return $q->row();
return false;
}
但在codeigniter中需要这种URL:
www.localhost/CI/services/ac_repair
答案 0 :(得分:0)
如果要使用此功能,则必须能够使用标题ac_repair
代替id
。这意味着标题需要标记为unique
,因此不包含任何重复项。
以下伪代码应该给您一个提示:
function services($url_title = null) {
if (!is_null($url_title)) {
// get ser would use title instead of $id
$this->db->where('title', $url_title);
} else {
// all rows
}
}
其他方法是“ hacky”的,我想不起任何我认为有用的方法。
旁注:您绝对不应在视图中返回