函数从视图页面接收出发日期和成人(它正确地传递了值,因为我已经检查了做回显函数),但是从这个函数我无法将值传递给另一个函数
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
}
答案 0 :(得分:1)
您没有分享您收到的错误消息。打几个。
最大的问题是你不能将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
包含我认为是日期字符串的任何斜杠(/),会出现问题。斜杠将成为URL的一部分,如果日期为" 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
。
答案 1 :(得分:1)
你的问题是:
redirect('booking/muktinath/' . $getNameValue);
尝试回显预订/ muktinath /'.$ getNameValue,您将看到有一个数组到字符串错误。重定向是一个网址,但您已从帖子中获取数据。您不能轻易地从帖子转换为网址,也不应该这样做,否则首先发布数据的重点是什么。你怎么知道帖子值中没有非法的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
.....
}
希望有所帮助。