как передать переменную от одного контроллера к другому в Code igniter

Я только начал изучать код воспламенитель .

Я хочу знать, как я могу передать переменную от одного контроллера(first_cont.php) на другой контроллер (second_cont.в PHP) ?

любая помощь будет оценили .

спасибо заранее :)

5 ответов


Это будет зависеть от обстоятельств. Если вы хотите сохранить данные в течение некоторого времени, то данные сеанса будут способом пойти. Однако, если вам нужно использовать его только один раз, Флэш-данные могут быть более подходящими.

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

$this->load->library('session');

затем сохраните информацию во флэш-данных:

$this->session->set_flashdata('item', $myVar);

наконец, во втором контроллере, получить данные:

$myVar = $this->session->flashdata('item');

очевидно, это означало бы, что у вас чтобы инициализировать библиотеку сеансов снова со второго контроллера или создать собственный базовый контроллер, который загружает библиотеку сеансов и наследует оба контроллера от этого.


Я думаю, что в codeigniter вы не можете передать переменную между двумя разными контроллерами. Одним из очевидных механизмов является использование данных сеанса.


хорошо, вот что-то о MVC наиболее легко процитировать:

контроллер предназначен для ввода, модель-для вашей логики, а вид-для отображения.

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


но, если это абсолютно необходимо, то вы могли бы просто использовать redirect просто перенаправить на другой контроллер.

что-то типа:

// some first_cont.php code here
redirect('/second_cont/valuereciever/value1')


// some second_cont.php code here
public function valureciever($value){
    echo $value; // will output value1
}

в Codeigniter есть много способов передать значение от одного контроллера к другому.

вы можете использовать сеанс codeigniter для передачи данных с одного контроллера на другой контроллер.

для этого вы должны сначала включить библиотеку на сеанс!--6-->

$this->load->library('session');

затем вы можете установить значение флэш-данных, используя имя переменной.

// Set flash data 
$this->session->set_flashdata('variable_name', 'Value');

их вы можете получить значение, где вы хотите, используя сеанс codeigniter flashdata

// Get flash data
$this->session->flashdata('variable_name');

второй вариант codeigniter позволяет перенаправить url-адрес из controll с именем контроллера, именем метода и значением, а затем вы можете получить значение в другом контроллере.

// Passing the value 
redirect('/another_controller_name/method_name/variable');

тогда вы можете получить значение в другом контроллере

public function method_name($variable)
{
echo $variable;
}

вот и все....


Если вы используете сеанс в первом контроллере, то не отменяйте этот сеанс в первом контроллере, вместо этого сохраните значение, которое вы хотите в другом контроллере, например,

$sess_array = array('value_name1' => 'value1', 'value_name2' => 'value2');
$this->session->set_userdata('session_name', $sess_array);

затем перезагрузите этот сеанс в другом контроллере как

$session_data= $this->session->userdata('session_name');
$any_var_name = $session_data['value1'];
$any_var_name = $session_data['value2'];

вот как вы можете передавать значения от одного контроллера к другому....