目前我有一个如下页面 -
abc.com/controller/action/23
这里23是Item id,它是动态的。我必须使用数据库中的id获取项目的名称,并路由到新的URL,如下所示 -
abc.com/controller/p/23-itemname
。
我怎么能这样做?
答案 0 :(得分:1)
您可以做的是当用户访问此页面时:
abc.com/controller/action/23
您将此代码放入控制器
<强> CONTROLLER 强>
function action()
{
$id = $this->uri->segment(3); //id is now 23, this is the third uri
$data['details'] = $this->YOUR_MODEL->get_details($id);
foreach($data['details'] as $d)
{
$itemname = $d->YOUR_TABLE_COLUMN_NAME;
}
redirect(base_url(). 'controller/p/' . $id . '-' . $itemname);
//line produces abc.com/controller/p/23-itemname
}
<强> MODEL 强>
function get_details($id)
{
$this->db->select('*');
$this->db->from('YOUR_TABLE_NAME');
$this->db->where('YOUR_ID_COLUMN_NAME',$id);
$query = $this->db->get();
return $query->result();
}
如果您需要更多说明,请发表评论。
Goodluck meyt
修改强>
由于你有动作并且你重定向到功能p,所以会发生这种情况。
function p()
{
$explodethis = $this->uri->segment(3); //Contains "23-itemname"
$pieces = explode("-", $explodethis); //Separate by the dash
$id = $pieces[0]; //Contains "23"
$itemname = $pieces[1]; //Contains "itemname"
$data['details'] = $this->YOUR_MODEL->YOUR_FUNCTION(YOUR_PARAMETERS)
$this->load->view('YOUR_VIEW',$data);
}
答案 1 :(得分:0)
不要求路由执行此操作。您可以按项目名称生成
<a href="<?php echo site_url('controller/action').'/'.$val['item_id'].'-'.$val['item_name']; ?>"
现在在控制器中展开此标题以获取该项的ID,然后执行您的查询
$title = explode('-','23-item-name');
$id = trim($title[0]);//this is your item ID