如何正确管理CodeIgniter中更深层次的分段URL?

时间:2013-12-22 10:33:48

标签: php url-routing codeigniter-2 remap

我想知道是否可以在 CodeIgniter2 中开箱即用,为每个控制器的功能创建网址而不修改routes.php,如下所示:

  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
  4. controllers/ecommerce.php的{​​{1}}是这样的:

    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()等其他功能吗?

1 个答案:

答案 0 :(得分: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...
}