Codeigniter многократного использования данных в функциях контроллера - PullRequest
2 голосов
/ 06 июля 2011

Я довольно новичок в CodeIgniter и пытаюсь повторно использовать $ data, которые я передаю представлению в другой функции от того же контроллера.

У меня есть следующий код:

class MyClass extends CI_Controller
{
    function func1()
    {
        $this->mdata['first'] = "first";
        $this->mdata['second'] = "second";  
        $this->load->view('my_view', $this->mdata);
    }

    function func2()
    {
        var_dump($this->mdata);
    }
}

Дело в том, что, очевидно, я не могу использовать свою переменную в func2 () ...

У кого-нибудь есть хитрость для этого?

Спасибо.

B

Ответы [ 4 ]

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

Создайте приватный метод _create_mdata() и вызовите его в обоих методах.Невозможно буквально обмениваться данными, не делая ничего подобного.

// methods starting with an underscore are considered private by CodeIgniter.
// you may want to actually declare it private though. That is better practice
function _create_mdata() 
{
    $this->mdata['first'] = "first";
    $this->mdata['second'] = "second";  
}

function func1()
{
    $this->_create_mdata(); 
    // continue with func1
}
0 голосов
/ 06 июля 2011

Псевдокод, который я не проверял.И вам, вероятно, стоит загрузить авто сессию.

   class Your_Class {

        function func1()
        {
            $this->load->library('session');

            $mdata = array( 'mdata' => array(   'first' => 'first',
                                                'second' => 'second'
                                            )
                         )  
            $this->session->set_userdata($mdata);

            $this->load->view('my_view', $mdata['mdata']);
        }

        function func2()
        {
            $this->load->library('session');
            $mdata = $this->session->userdata('mdata');
            var_dump($mdata);
        }
    }
0 голосов
/ 06 июля 2011

func1 вызывается только когда браузер пользователя на yoursite.com/myclass/func1. Теперь переход к func2 с использованием URL-адреса вызывает только func2. Поэтому значения mdata не назначаются. Вы можете использовать конструктор, где вы назначаете эти значения. Я приведу пример кода, когда у меня будет больше времени.

0 голосов
/ 06 июля 2011
class Your_Class {
    public $mdata;

    function func1()
    {
        $this->mdata['first'] = "first";
        $this->mdata['second'] = "second";  
        $this->load->view('my_view', $this->mdata);
    }

    function func2()
    {
        var_dump($this->mdata);
    }
}

Теперь "$this->mdata" будет работать.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...