将参数传递给控制器​​的构造函数

Mat*_*iva 5 php codeigniter codeigniter-routing

我有一个控制器,它具有几种应该共享共同信息的方法。假设我的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
Run Code Online (Sandbox Code Playgroud)

我需要从数据库中检索一些信息,并使id它们可用于所有方法,而不是在每个方法中都写一行以调用模型。我怎样才能做到这一点?

小智 4

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!
 }
Run Code Online (Sandbox Code Playgroud)

在这里,我只是对数组进行了硬编码(这可能是一个非常糟糕的主意)。不过,如果需要,您可以将数据存储在 codeigniter 会话中。Codeigniter 可以将此数据存储在 cookie 中(如果总大小小于 4kb),否则您可以在数据库中存储更大的数据块(请参阅有关如何执行此操作的文档)。

请参阅: http: //codeigniter.com/user_guide/libraries/sessions.html

小节:将会话数据保存到数据库

这是一些会话练习:

$this->session->set_userdata('mydata', $mydata);
....
$mydata = $this->session->userdata('mydata');
Run Code Online (Sandbox Code Playgroud)