У меня есть массив в сеансе, но я не могу их показать. Мой код: Контроллер:

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

И все в порядке, но когда я пытаюсь войти в систему и показать сеанс данных, у меня появляется такая ошибка:

Невозможно получить доступ к атрибуту ("игре") строковой переменной ("PNdjNUeuZ_d5uJlm1VG7zPZhp2Vb4CY3nDf93vAQ574") в baw \ kupon.html.twig в строке 13.

Эта переменная из сеанса после входа в систему, я проверил информацию о дампе:

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" } }

И теперь я понятия не имею, как это исправить.

1
zupaaa 25 Ноя 2016 в 15:11

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" => ...
        ...
    ],
    ....
]
2
NDM 25 Ноя 2016 в 13:39

Попробуй ниже

{% 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 %}
0
Gopal Joshi 25 Ноя 2016 в 13:42