如何通过URL传递给codeigniters控制器一个参数?
我使用IgnitedTables来显示jquery DataTable。实际上我使用ajax填充表(cms_datatable()
)我想以某种方式通过url传递一个语言参数来过滤语言上的内容
我有以下
public function cms($cms_lang = '') {
$this->cms_lang = $this->session->userdata('cms_lang');
if(isset($cms_lang)){
$this->cms_lang['current_lang'] = $cms_lang;
} else {
$this->cms_lang['current_lang'] = 'de';
}
$tmpl = array('table_open' => '<table id="cms_table" border="0" cellpadding="2" cellspacing="2" class="table table-striped table-primary table-condensed">');
$this->table->set_template($tmpl);
$this->table->set_heading('<input name="id[]" type="checkbox">', 'Title', 'SEF URL', 'Letztens bearbeitet', 'Status');
$this->load->view('admin/admin', $this->data);
}
public function cms_datatable() {
error_reporting(-1);
// var_dump($this->cms_lang['current_lang']); returns NULL
$this->datatables->select('id,title,sef_title, creation_date,status')
->edit_column('title', '<a href="/admin/dashboard/edit_post/$1">$2</a>', 'id, title')
->unset_column('creation_date')
->add_column('creation_date', '<span class="label label-danger">$1</span>', 'creation_date')
->unset_column('status')
->add_column('status', get_buttons('$1'), 'id')
->from('ci_content')
->where('language', $this->cms_lang);
echo $this->datatables->generate();
}
比我尝试覆盖变量$lang
的默认值,如
domain/admin/cms/en
但我的var_dump($lang)
显示了defualt值
路由为
$route['admin/cms'] = "admin/dashboard/cms";
$route['admin/cms/(:any)'] = "admin/dashboard/cms/$1";
答案 0 :(得分:2)
你的控制器 fn名称为cms_datatable
,但你没有打电话。
尝试使用网址:
$route['admin/cms'] = "admin/dashboard/cms_datatable";
$route['admin/cms/(:any)'] = "admin/dashboard/cms_datatable/$1";
该路线假定:
同样,重新阅读你的问题,我不确定你为什么要将语言变量传递给EACH控制器?只需在会话中设置它并检查它。如果会话定义了不同的语言,则覆盖默认值。让每个控制器检查这不是一个好的形式。