Я только начал изучать Code Igniter.
Я хочу знать, как передать переменную с одного контроллера (first_cont.php) на другой контроллер (second_cont.php)?
Любая помощь будет оценена по достоинству.
Заранее спасибо :)
Я только начал изучать Code Igniter.
Я хочу знать, как передать переменную с одного контроллера (first_cont.php) на другой контроллер (second_cont.php)?
Любая помощь будет оценена по достоинству.
Заранее спасибо :)
Это будет зависеть от обстоятельств. Если вы хотите сохранить данные в течение некоторого времени, то данные сеанса будут идти по пути. Однако, если вам нужно использовать его только один раз, данные флэш-памяти могут быть более уместными.
Первым шагом будет инициализация библиотеки сеансов:
$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 существует много способов передать значение от одного контроллера к другому.
Вы можете использовать sessionignign Session для передачи данных от одного контроллера другому контроллеру.
Для этого вы должны сначала включить библиотеку для сеанса
$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'];
это то, как вы можете передавать значения с одного контроллера на другой.