如何在symfony中阅读虚线会话的孩子

时间:2017-10-10 17:12:58

标签: php symfony

我正在开发一些项目,其中一些人用会话点缀会话写内容,如下面的例子所示,我想知道Symfony是否知道会话的点缀符号,以便somedata.a的所有孩子都可以重新调整为控制器中的数组。

示例:

$this->get('session')->set('somedata.a.a', 1);
$this->get('session')->set('somedata.a.b', 2);
$this->get('session')->set('somedata.a.c', 3);

并将所有子会话作为数组从' somedata.a'。

$this->get('session')->get('somedata.a');

目前正在使用Symfony 3

1 个答案:

答案 0 :(得分:0)

尝试将此受保护的方法注入您的控制器并将其用作帮助程序:

protected function getSessionValuesByPrefix( $prefix )
{
    $result  = array();
    $session = $this->get('session');

    foreach ($session->all() as $key => $value) {
        if (strpos($key, $prefix) === 0) {
            // We found a result ex: "someData.foo.bar", now lets explode
            $foundedSessionKeyToArray = explode('.', $key);
            // Now get the last part of the key
            $lastPart = end($foundedSessionKeyToArray);

            $result[$lastPart] = $value;
        }
    }

    return $result;
}

现在你可以通过调用来获得结果:

$data = $this->getSessionValuesByPrefix('someData.a');