2013-12-22 47 views
0

我想知道這是否是可能的開箱即用的CodeIgniter2創建的URL,而無需修改routes.php爲每個控制器的功能是這樣的:如何正確管理CodeIgniter中的深層細分網址?

  1. backend.website.com/ecommerce/products/edit/$id
  2. backend.website.com/ecommerce/currencies/form/$id
  3. backend.website.com/ecommerce/customers/partners/etc/$arg1/$arg2

我的controllers/ecommerce.php對於function products()是這樣的:

public function products($page = 0, $items = NULL, $subview = NULL) 
{ 

    if($subview != NULL){ 
     // This function is localhost/ecommerce/products/form/$some_id 
     _remap($subview); // gives me an error 


    }else{ 
    // Default view with pagination arguments $page and $items 

    // Page settings 
    $this->config->set_item('page_name', 'Products'); 
    $this->config->set_item('page_subname', 'Product listing table'); 

    // Request items 
    $this->data['items'] = $this->ecommerce_model->get_products(array('page' => $page, 'items' => $items)); 

    // Creating a view 
    $this->data['view'] = $this->load->view('/ecommerce/products/index', $this->data, TRUE); 
    $this->load->view('/_templates/default/index', $this->data); 

    } 
} 

public function _remap($method) 
{ 
    if ($method == 'form') 
    { 
     $this->$method(); 
    } 
    else 
    { 
     // SKIP 
    } 
} 

我發現默認_remap()功能可能是有用的,但我不知道如何用我的函數中使用它。

有沒有人有任何經驗,可以提供一些小樣本?

==== ====修訂

它甚至有可能爲_remap()與其他職能的工作,如orders()customers()currencies(),等...在同一時間?

回答

2

你不需要爲這樣的事情複雜的事情。

只需添加另一個參數,以您的每一個方法,例如$action

public function products($action = false, $page = 0, $items = NULL, $subview = NULL) { 

    switch($action) { 

     case 'edit': 
      // edit stuff here 
      break; 

     case 'something else': 
      // other stuff 
      break; 
    } 
    // etc... 
} 
+0

請,你能解釋一下,如何與CI分頁使用它呢?當我點擊第二頁時,它會重定向到'/ ecommerce/products/25'。現在25變成'$ action = 25',並且會忽略其餘的。可以同時使用'$ action'嗎? – aspirinemaga

+0

我還沒有使用分頁一段時間,讓我在幾分鐘內回覆您......但它必須有可能做到這一點,我認爲這是與url_segment有關。 – Shomz

+1

是的,我是對的,在文檔中閱讀更多,但你應該使用'$ config ['uri_segment']'。 3是默認值,你應該去4 ... – Shomz