Как передать данные с перенаправлением в codeigniter

в моем контроллере я использовал этот способ. я хочу передать переменные данные в мою индексную функцию контроллера через redirect

$in=1;
redirect(base_url()."home/index/".$in);

и моя функция ИНДЕКС

function index($in)
{
    if($in==1)
    {

    }
}

но я получаю некоторые ошибки, такие как неопределенные переменные.
Как я могу это решить?

3 ответов


таким образом, в контроллере вы можете иметь одну функцию:

$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 после 2 тире. Но если у вас есть, например, эта структура ссылок:www.mydomain.com/subdomain/home/index/$in вам придется использовать сегмент(4).

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


использовать сессии для передачи данных при перенаправлении. В 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')


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

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

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

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