TVTable как получать значения из ячеек таблицы

Здравствуйте.
Первый раз столкнулся с компонентом TVTable и не могу ничего понять пока. (
В общем ситуация такая:
1. Есть дополительное поле с таблицей TVTable, называется «Prices» — в нем некая таблица (первая колонка — размеры, остальные — различные параметры).
2. Есть еще одно дополнительное поле Авто-метка «Sizes» — в нем просто список размеров.
3. На странице шаблона выводится список из поля «Sizes»:
{if $_modx->resource.Sizes?}
<div class="form_size">
<p class="h4">Выберите размер</p>
<div class="d-flex flex-wrap ">
{set $sizes = $_modx->resource.Sizes | split}
{foreach $sizes as $size first=$first}
<div class="form___size_item">
<span>{$size}</span>
<p>ВОТ СЮДА НУЖНО ВСТАВИТЬ ЗНАЧЕНИЕ ИЗ ЯЧЕЙКИ ТАБЛИЦЫ</p>
</div>
{/foreach}
</div>
</div>
{/if}
Мне нужно в этот цикл подставить соответствующие значения из таблицы, т.е. сравнивать размеры по названию и, при совпадении, подставлять параметр из определенной колонки таблицы.
Как это можно реализовать?
Игорь
20 марта 2020, 11:32
modx.pro
1
506
0

Комментарии: 11

Баха Волков
20 марта 2020, 15:27
0
Компонент TVTable хранит данные в json формате, получите данные и воспользуйтесь любым удобным для вас способом, будь то модификатор фенома fromJSON или используйте дары языка php написав сниппет
    Игорь
    20 марта 2020, 15:31
    0
    Спасибо. А можно на примере показать? (я не особо силен в fenom)
    В гугле не могу ничего найти похожего.
      Dmitry P.
      20 марта 2020, 15:52
      +1
      {foreach $_modx->resource.Prices | fromJSON as $row}
          {foreach $row as $cell}
              {$cell} {*тут выведутся все значения всех ячеек*}
          {/foreach}
      {/foreach}
        Игорь
        20 марта 2020, 16:46
        0
        Спасибо, но все равно не понял — а можно как-то вывести конкретную ячейку таблицы по координатам (строка, столбец)?
          Игорь
          21 марта 2020, 10:06
          0
          Ну я правда не понимаю. Есть например такая табличка в TVTable:
          Size Price1 Price2 Price3 Availability
          10 см 100 руб - - есть
          20 см 150 руб - - нет
          30 см 200 руб 250 - скоро будет
          Как мне получить из json строки данные из колонок Size и Availability?..
            Игорь
            21 марта 2020, 13:47
            0
            ладно, будем считать что разобрался — добавил:
            {foreach $_modx->resource.Prices | fromJSON as $row}
                {foreach $row as $cell}
                    {if $cell@first}  <span>{$cell}</span>  {/if}
            		{if $cell@index == 4}
            		{if $cell !=''} <p>{$cell}</p> {else} <p>нет<p> {/if}
            		{/if}
                {/foreach}
            {/foreach}
            Всем спасибо
              Dmitry P.
              22 марта 2020, 08:41
              1
              +1
              {set $prices = $_modx->resource.Prices | fromJSON}
                  {$prices[2][2]} {*получить значение ячейки (2,2), индексы с 0 начинаются*}
              
                  {foreach $prices as $row}
                      Size: {$row[0]}
                      Availability: {$row[4]}
                  {/foreach}
              Работа с массивами аналогична пхп.
              По феному есть документация раз и два
                Игорь
                22 марта 2020, 19:42
                0
                Ваш ответ реально помог, спасибо… теперь буду знать )
                {foreach $prices as $row}
                        Size: {$row[0]}
                        Availability: {$row[4]}
                    {/foreach}
                (без лишних foreach, как я прежде «напридумывал»)
      Сергей
      30 июня 2022, 10:04
      0
      Вопрос у меня близкий по теме.
      tabletv у меня находится внутри MIGX, таблица состоит из 2-х колонок, соответственно мне нужно вывести каждую строку обернутую в свое класс и ячейки в ней обернутые в свои классы, вывожу так, насколько это оптимально или есть лучше решение?
      {foreach $row.table | fromJSON as $row.table}
          <div class="advant-table-item">
              {foreach $row.table as $cell}
                  {if $cell@first}  <span class="advant-table-label">{$cell}</span>  {/if}
                  {if $cell@last}<span class="advant-table-val">{$cell}</span>{/if}
              {/foreach}
          </div>
      {/foreach}
        Роман
        30 июня 2022, 10:57
        0
        Зачем прогонять весь массив когда нужно первый и последний элемент?
        {$row.table.0}
        Последний не знаю, возможно так как-то, если включены в настройках обработка php(pdotools_fenom_php)
        {end($row.table)}
          Сергей
          30 июня 2022, 11:10
          0
          мне нужны все строки, и ячейки все, т.к. в строке всего 2 ячейки, я их обозначил @Сергей Глазунов и @last
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11