Symfony2:在会话中存储和检索数组

时间:2014-06-25 23:14:19

标签: php session symfony session-variables

我是symfony2&的新手。使用Symfony 2.5。我正在关注Symfony官方文档以获取会话指导。要从会话中存储和检索数组,我正在关注this official documentation

问题背景

当用户从首页登录并进入网站时,我会开始一个新会话,并使用以下代码存储信息。

$sessionData = array(
                    'unit' => $unit,
                    'client' => $client,
                    'group' => $group,
                );
$session = new Session();
$session->set('fw', $sessionData);

当我print_r会话信息时,它会给我以下输出,这是预期的。

Array
    (
        [fw] => Array
            (
                [unit] => shoes
                [client] => nike
                [group] => north
            )
    )



问题1

现在,当我想向此数组添加更多数据时,我会按照此处给出的相同symfony文档http://symfony.com/doc/current/components/http_foundation/sessions.html#attributes 并执行以下操作。

$this->get("session")->set('fw/storeid', $storeid);

根据文档,我的新商店ID详细信息应作为FW数组中的key =>值对存储在会话中。但是,它保存原样。当我print_r时,这是我得到的输出。

Array
    (
        [fw] => Array
            (
                [unit] => shoes
                [client] => bata
                [group] => north
            )
        [fw/storeid] => abc1
    )

我做错了吗?是否有不同的方法在会话中将数据存储在数组中?



问题2

从上面的会话中,当我想要获取一些数据时,我就像文档所说的那样。 $this->get("session")->get('fw/unit');。但是,这给了我未定义的索引错误。再一次,在会话中从数组中获取数据的正确方法是什么?


是否有任何模式详细示例可供选择?


作为一种解决方法,我目前按照以下方式执行此操作(正是文档说我们可以避免):

$sessiondata = $this->get("session")->get('fw'); $sessiondata['storeid'] = $storeid; $this->get("session")->set('fw', $sessiondata);

0 个答案:

没有答案