symfony3 twig和show session array

时间:2016-11-25 12:11:17

标签: php session twig symfony

我在会话中有数组,但我无法显示它们。 我的代码: 控制器:

  $game = $request->query->get('game');
  $type = $request->query->get('type');
  $odd = $request->query->get('odd');

  $kupon = array(
                 'game' => $game,
                 'type' => $type,
                 'odd' => $odd,
               );

   $this->get('session')->set('kupon', $kupon);

游戏'例如:'阿森纳 - 切尔西','类型'数字是1,奇数是浮点数,如' 2.2'。

Twig文件:

{% if app.session.get('kupon') is not null %}
<table>
{% for kupon in session %}
    <tr>
      <td>{{ kupon.game }}</td>
      <td>{{ kupon.type }}</td>
      <td> </td>
    </tr>
{% endfor %}
</table>

一切都好,但是当我尝试登录并显示数据会话时,我有这个错误:

  

无法在第13行的baw \ kupon.html.twig中对字符串变量(&#34; PNdjNUeZ_d5uJlm1VG7zPZhp2Vb4CY3nDf93vAQ574&#34;)访问属性(&#34;游戏&#34;)。

此变量来自登录后的会话,我检查了有关它的转储信息:

array(3) { 
["_csrf/login"]=> string(43) "PNdjNUeuZ_d5uJlm1VG7zPZhp2Vb4CY3nDf93vAQ574" ["login"]=> string(4) "test" 
["kupon"]=> array(3) { ["game"]=> string(31) "Arsenal Londyn - Chelsea Londyn" ["type"]=> string(1) "1" ["odd"]=> string(3) "2.2" } }

现在我无法解决这个问题。

2 个答案:

答案 0 :(得分:2)

{% for kupon in session %}不会循环app.session.get('kupon')

你想要做的是:

{% for kupon in app.session.get('kupon') %}

但是看着你丢弃的数据,app.session.get('kupon')只是一个数据集,所以你甚至无法循环(带有预期的结果)......

只会:

{{ app.session.get('kupon').game }}

关于您的数据的额外说明:您在会话中有这个:

"kupon" => [
    "game" => ...
    "type" => ...
    ...
]

为了能够遍历这些,您需要创建数据类型的集合:

"kupon" => [
    [
        "game" => ...
        "type" => ...
        ...
    ],
    [
        "game" => ...
        "type" => ...
        ...
    ],
    ....
]

答案 1 :(得分:0)

尝试以下

{% if app.session.get('kupon') is not null %}
  {% set kupon = app.session.get('kupon') %}
  <table>
      <tr>
        <td>{{ kupon.game }}</td>
        <td>{{ kupon.type }}</td>
        <td> </td>
      </tr>
  </table>
{% endif %}