编码器从URL传递值


Codeigniter pass value from URL

函数接收出发日期和成人从视图页(它传递值正确,因为我已经检查做回声函数),但从这个函数我不能传递值给另一个函数

public function index()
{
    if ($data = $this->input->post('muktinath')) {
        $date = $data['departure_on'];
        $adult = $data['adult'];
        $getNameValue = array(
            $date = 'departure_on',
            $adult = 'adult',
        );
        redirect('booking/muktinath/' . $getNameValue);
    }
    else{
        $this->load->view('index');
    }
}

这个函数必须接收值

public function muktinath($getNameValue)
{
    echo $getNameValue; 
    // here value must be shown of departure date and adult passed from above
}

您没有分享您得到的错误消息。我敢打赌有好几个。

最大的问题是您不能将array作为查询字符串的一部分。但是解决方法很简单。

function index()
{
    $data = $this->input->post('muktinath'); 
    if($data)
    {
        //From your question $data seems to be an array already. Just use that!
        redirect('booking/muktinath/'.$data['departure_on'].'/'.$data['adult']);
    }
    else
    {
        $this->load->view('index');
    }
}

接收这些值的函数就是这样定义的。

public function muktinath($date, $name)
{
    echo $date . " - " . $name;
}

将有一个问题如果$date包含任何斜杠(/)在我认为是一个日期字符串。如果日期是"7/9/2016",名称是"sandesh",那么斜杠将成为URL的一部分。

http://example.com/booking/muktinath/7/9/2016/sandesh

如您所见,它有比您期望的多几个URI段。这个URL将返回"7 - 9",这不是很有帮助。您可能必须在发送时调整日期的格式,然后在muktinath()接收后重新格式化。 顺便说一下,你的数组声明是错误的。我想你是故意的。
$getNameValue = array(
   'departure_on' => $date,
   'adult' => $adult
   );

问题是,你刚刚重新创建了$data已经是什么。但是你不需要$getNameValue

你的问题是:

redirect('booking/muktinath/' . $getNameValue);

尝试回显booking/muktinath/'。$getNameValue,你会看到你有一个数组到字符串的错误。重定向是一个url,但您已经从帖子中获得了数据。您不能轻易地将帖子转换为url,也不应该这样做,否则发布数据的首要意义是什么。您如何知道post值中没有非法url字符?

为什么要重定向,只是把你的表单放在正确的页面上,然后处理那里的post数据?

验证,格式化url然后在url调用中使用实际组件不是这样,而是这样....

redirect('booking/muktinath/'.$date.'/'.$adult);

或者更好,不要在这里重定向,而是调用一个函数(一个库或模型或在你的控制器,这取决于你)

public function muktinath($date, $adult)
{
       ....
      return TRUE/FALSE or whatever you need.
} 

在控制器中检查返回值,看看该怎么做

if ($this->mylibraryorwhatever->mukinath($date, $adult) 
{
    // success
    redirect('success page');  // or whatever
}
else
{
   // fail
   .....
}

希望对你有帮助。