我正在使用CodeIgniter框架。我加载了一个主视图,其中包含几个选项卡,这些选项卡通过 AJAX 在<div>
中加载其他视图。我的控制器类如下所示:
class MainController extends MY_Controller
function main($id=0)
{
$this->load->model('main_model');
$this->data['info'] = $this->main_model->foo($id);
$this->load->view('main_view', $this->data);
}
function tab1()
{
$this->load->view('tab1_view', $this->data);
}
}
我通过调用mywebapp/main/123
加载主页。该id
可用于main
方法和main_view
。但是当我单击该选项卡时,我也想在main_view
的<div>
中使用id
。最好的方法是什么?也许有什么方法可以使这个变量对控制器中的每个方法都是全局的?
我使用 jQuery 加载选项卡:
$("#div").load(mywebapp/tab1);
使用 __construct()
class MainController extends MY_Controller
protected $_id;
public function __construct()
{
$this->_id = $this->uri->segment(3);
}
function main()
{
$this->load->model('main_model');
$this->data['info'] = $this->main_model->foo($this->_id);
$this->load->view('main_view', $this->data);
}
function tab1()
{
//available here too
echo $this->_id;
$this->load->view('tab1_view', $this->data);
}
}
或者,您可以将其更改为使用:$this->uri->uri_to_assoc(n)
哪些是/method/controller/key/value/key2/value2
之后的键值对
例:
/user/search/name/joe/location/UK/gender/male
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)