2017-09-27 33 views
0

我有一個表名爲uri_table包含:如何在sql或codeigniter中將值設置爲%field_value%?

ID,uri_segment

1/DIR_NAME/BLA-BLA-1/

2,/ DIR_NAME/BLA-BLA-2/

3,/ dir_name/bla-bla-3/

我想獲得純粹的鏈接,只有包含controller_name和控制器參數時才包含。但是當我使用$ _SERVER ['URI_SEGMENT']時,它也會得到控制器參數。

,所以我不能做到這一點下面的代碼在我的模型來搜索:代替

function check_uri() 
{ 
    $this->db->like('uri_segment',$uri_segment,'after'); 
    $id = $this->db->get('uri_table')->row_array()['id']; 
    return $id; 
} 

function check_uri($request_uri=$_SERVER['URI_SEGMENT']) 
{ 
    //trim controller param that is numeric 
    for($i = strlen($request_uri)-1;$i > 0;$i--) 
    { 
     if(is_numeric($request_uri[$i]) || $request_uri[$i]=='/') 
     { 
      continue; 
     } 
     else 
     { 
      $request_uri = substr($request_uri,0,$i+1); 
      break; 
     } 
    } 
    $this->db->where('uri_segment',$request_uri); 
    $id = $this->db->get('uri_table')->row_array()['id']; 
    return $id; 
} 

這是我的代碼,但現在也可以刪除PARAM即數字如果$request_uri = '/dir_name/bla-bla-3/1/some_param/3'它會返回$ id null。我能做些什麼,以除去帕拉姆/獲取URI無控制器PARAM或者如何比較$uri_segmenturi_segment ($this->db->like($uri_segment, '%uri_segment%'))?

+0

遺憾的困惑的解釋。我只是一個PHP和Codeigniter初學者,不知道該怎麼做 –

+0

你想從字符串中提取'bla-bla-1'嗎? –

+0

我想提取/ DIR_NAME/BLA-BLA-1而不是/ DIR_NAME/BLA-BLA-1/some_param –

回答

1

做一件事時,你在那家商店創建一個控制器控制器名稱是這樣的:

class About extends CI_Controller { 
    // MVC config 
    var $PANEL = ''; 
    var $CONTROLLER = 'about'; 
    var $MODEL = 'mdl_about'; 
    var $TITLE = 'page title'; 
    var $LIST_PAGE_NAME = 'aboutus'; 

    function About() { 
     parent::__construct(); 
     //$this->load->model($this->MODEL, 'model'); 
    } 
    function index() { 
     $this->load->view($this->LIST_PAGE_NAME); 
    } 
} 

所以上面的控制器,模型,頁面標題和視圖頁面都可以在任何地方使用與該控制器相關的內容。

顯示變量值使用這樣的:

echo $this->CONTROLLER; 

或者你可以試試這個:

$this->router->fetch_class(); //for controller 
$this->router->fetch_method(); //for method 
+0

,但我在那裏工作的項目超過30個控制器了。 –

+0

有沒有其他解決方案? –

+0

我想你可以試試echo current_url(); –

相關問題