Как передать данные с переадресацией в 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

Больше информации было бы очень полезно, так как это должно работать.

Вещи, которые вы можете проверить:

  • Является ли ваш контроллер именем home.php? Переход на redirect(base_url()."home"); показывает вашу домашнюю страницу?
  • Сделайте свою функцию индекса общедоступной.

    public function index($in) {
         ....
    }
    

Ответ 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');