我想知道是否可以在 CodeIgniter2 中开箱即用,为每个控制器的功能创建网址而不修改routes.php
,如下所示:
backend.website.com/ecommerce/products/edit/$id
backend.website.com/ecommerce/currencies/form/$id
backend.website.com/ecommerce/customers/partners/etc/$arg1/$arg2
我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()
等其他功能吗?
答案 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...
}