以下是我一直遵循的步骤:
首先,我已经初始化了会话的命名空间
$guest_events = new Zend_Session_Namespace('guest_events');
然后在会话中添加了一个数组
$guest_events-> events = array();
然后我在阵列中添加了一些事件。
看起来像:
Array
(
[amount_0] => 1
[event_id_0] => 69
[event_title_0] => Sunday Collection
[amount_1] => 11
[event_id_1] => 78
[event_title_1] => Test event
)
当我尝试通过ajax实现编辑量功能时,现在在我的另一个控制器中:
$event_id = $this-> getRequest()-> getParam('event_id');
$edit_amount = $this-> getRequest()-> getParam('edit_amount');
$event_title = $this-> getRequest() -> getParam('event_title');
$guest_events = new Zend_Session_Namespace('guest_events');
$event_array = $guest_events-> events;
for ($i = 0; $i < 5; $i ++)
{
if (array_key_exists('event_id_'.$i, $event_array))
{
if ($event_array['event_id_'.$i]==$event_id && $event_array['event_title_'.$i]==$event_title)
{
// unset the amount and replace with new one
unset($guest_events-> events-> amount_0);
$guest_events-> events-> amount_0 = $edit_amount;
}
}
}
我已经尝试了所有东西,但会话变量保持不变..任何人都可以告诉为什么? :(
答案 0 :(得分:1)
如果元素events
是Zend_Session_Namespace
对象中的数组,那么您应该将其设置为:
$guest_events-> events['amount_0'] = $edit_amount;
而不是像:
$guest_events-> events-> amount_0 = $edit_amount;
此外,由于您处于一个找到正确数值的循环中,我认为它应该是:
$guest_events-> events['amount_' . $i] = $edit_amount;
答案 1 :(得分:0)
我发现了问题..它不会进入内部的if循环..即:
if ($event_array['event_id_'.$i]==$event_id && $event_array['event_title_'.$i]==$event_title)
{
// unset the amount and replace with new one
unset($guest_events-> events-> amount_0);
$guest_events-> events-> amount_0 = $edit_amount;
}
仍然无法弄清楚为什么会发生这种情况:/