我有一个控制器,其中有几个方法都应该共享一些公共信息。假设我的URI格式如下:
http://server/users/id/admin/index
http://server/users/id/admin/new
http://server/users/id/admin/list
http://server/users/id/admin/delete
我需要从数据库检索一些关于id
的信息,并使它们在所有方法中都可用,而不是在每个方法中写一行代码来调用模型。我该怎么做?
我有一个控制器,其中有几个方法都应该共享一些公共信息。假设我的URI格式如下:
http://server/users/id/admin/index
http://server/users/id/admin/new
http://server/users/id/admin/list
http://server/users/id/admin/delete
我需要从数据库检索一些关于id
的信息,并使它们在所有方法中都可用,而不是在每个方法中写一行代码来调用模型。我该怎么做?
class users extends Controller {
private $mydata = array();
function users()
{
parent::Controller();
....
$this->mydata = $this->model->get_stuff($this->uri->segment(2));
}
function index()
{
$this->mydata; //hello data!
}
$this->session->set_userdata('mydata', $mydata);
....
$mydata = $this->session->userdata('mydata');
class YourController extends Controller
{
function YourController()
{
parent::Controller();
$this->_preDispatch();
}
function _preDispatch()
{
// any code you want to run before the controller action is called
}
可能需要在调用父类之前调用preDispatch。尝试一下,看看是否有效。我不知道他们仍然使用PHP4语法。唉 :(
根据您的URL结构以及CodeIgnitor使用MVC模式的事实,我假设您正在使用mod_rewrite将URL路径格式化为index.php的查询字符串。如果是这种情况,则在脚本执行的任何时候,"id"的值应该在$_REQUEST['id']中可用...
id
:我知道如何在方法中使用它,但不知道如何在构造函数中使用。顺便说一下,您也可以在 CodeIgniter 中使用 PHP5 语法。 - Matteo Riva