无法在zend中更改会话变量..方法是错误的吗?

时间:2012-10-08 16:44:27

标签: php ajax zend-framework

以下是我一直遵循的步骤:

首先,我已经初始化了会话的命名空间

$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;
                }
          }
        }

我已经尝试了所有东西,但会话变量保持不变..任何人都可以告诉为什么? :(

2 个答案:

答案 0 :(得分:1)

如果元素eventsZend_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;
                }

仍然无法弄清楚为什么会发生这种情况:/