Codeigniter передает переменные нескольким функциям контроллера - PullRequest
1 голос
/ 09 июля 2011

Можно ли добавить следующий код в несколько функций без повторного ввода кода по отдельности?

$user_id = $this->tank_auth->get_user_id();
$data['row'] = $this->Profile_model->profile_read($user_id);

Я попытался поместить переменные в конструктор, но я получил неопределенные переменные для обоих.

Ответы [ 5 ]

2 голосов
/ 09 июля 2011

вы можете включить его в частную функцию контроллера, т.е.

private function get_user_id()
{
    $user_id = $this->tank_auth->get_user_id();
    return $this->Profile_model->profile_read($user_id);
}

И затем в каждой функции вашего контроллера выполните:

$data['row'] = $this->get_user_id();
1 голос
/ 09 июля 2011

Это спасет вас только на одну строку, но это на 100% меньше строк кода!

private function rowData(){
  $user_id = $this->tank_auth->get_user_id();
  return $this->Profile_model->profile_read($user_id);
}

$data['row'] = $this->rowData();
0 голосов
/ 09 июля 2011

Вы можете иметь это как конструктор контроллера:

class Example extends CI_Controller {

   protected $user_id;

   function __construct()
   {
        parent::__construct();

        $this->load->library('tank_auth');
        $this->load->model('Profile_model');

        $this->user_id = $this->tank_auth->get_user_id();
        $data['row'] = $this->Profile_model->profile_read($this->user_id);

        $this->load->vars($data);
   }

}

и вы будете иметь доступ к $ row в любых последующих представлениях, загруженных из этого конструктора, а также сможете использовать $ this-> user_id в любой из функций этого контроллера.

Источник: http://codeigniter.com/user_guide/libraries/loader.html

0 голосов
/ 09 июля 2011

Вы загрузили библиотеку tank_auth или установили ее автозагрузку?

0 голосов
/ 09 июля 2011

Ну, если вы поместите его в конструктор, вам понадобится:

$this->user_id = $this->tank_auth->get_user_id();
$this->data['row'] = $this->Profile_model->profile_read($user_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...