Как передать данные с переадресацией в codeigniter
В моем контроллере я использовал этот способ. Я хочу передать переменные данные моей индексной функции контроллера через перенаправление
$in=1;
redirect(base_url()."home/index/".$in);
и моя индексная функция
function index($in)
{
if($in==1)
{
}
}
Но я получаю некоторые ошибки, такие как переменные undefined.
Как я могу это решить?
Ответы
Ответ 1
Итак, в контроллере вы можете иметь одну функцию:
$in=1;
redirect(base_url()."home/index/".$in);
И в целевой функции вы можете получить доступ к значению $in следующим образом:
$in = $this->uri->segment(3);
if(!is_numeric($in))
{
redirect();
}else{
if($in == 1){
}
}
Я помещаю сегмент (3), потому что на вашем примере $in находится после двух тире. Но если у вас есть, например, эта структура ссылок: www.mydomain.com/subdomain/home/index/$in
, вам нужно будет использовать сегмент (4).
Надеюсь, что это поможет.
Ответ 2
Используйте сеанс для передачи данных при перенаправлении. В CodeIgniter есть специальный метод, который называется "set_flashdata"
$this->session->set_flashdata('in',1);
redirect("home/index");
Теперь вы можете получить in
в указательном контроллере, например
function index()
{
$in = $this->session->flashdata('in');
if($in==1)
{
}
}
Помните, что эти данные будут доступны только для перенаправления и утери при следующем запросе страницы. Если вам нужны стабильные данные, вы можете использовать URL с параметром и GET $this->input->get('param1')
Ответ 3
Больше информации было бы очень полезно, так как это должно работать.
Вещи, которые вы можете проверить:
Ответ 4
Используйте сеанс для передачи данных во время перенаправления. Есть два шага
Шаг 1 (Функция Post):
$id = $_POST['id'];
$this->session->set_flashdata('data_name', $id);
redirect('login/form', 'refresh');
Шаг 2 (функция перенаправления):
$id_value = $this->session->flashdata('data_name');