Связь между ресурсами с дополнительными параметрам

Добрый день. Сразу к делу. У меня есть два ресурса Актеры и Спектакли. Нужно связать эти два ресурса таким образом, чтобы когда я просматривал карточку спектакля, я мог видеть всех актеров, участвующих в спектакле с именем персонажа в спектакле. А в админке, когда я редактирую спектакль я должен выбрать/указать актера и написать рядом имя его персонажа в спектакле.

Как я пытался сделать:
1) Создал новый TV с типом checkbox, в поле возможные значения написал запрос, чтобы вытаскивались все актеры. Не подошло, потому что нужно указывать имя персонажа
2) Пробовал создать свой TV из того же checkbox. Добавил дополнительное текстовое поле. В админке форма отображалась, но ничего не сохранялось. Код шаблона(/manager/templates/default/element/tv/renders/inputcheckboxwithparams.tpl):

<table style="border-collapse: collapse;border: 1px solid black;">
    <thead>
        <tr>
            <td style="border: 1px solid black; padding: 5px;">Учавствует ли в спектакле</td>
            <td style="border: 1px solid black; padding: 5px;">Имя</td>
            <td style="border: 1px solid black; padding: 5px;">Имя роли в спектакле</td>
        </tr>
    </thead>
    <tbody>
        {foreach from=$opts item=item key=k name=cbs}
            <tr>
                <td style="border: 1px solid black; padding: 5px;">
                    <input
                        type="checkbox"
                        id="tv{$tv->id}-{$k}"
                        name="tv{$tv->id}[]"
                        value="{$item.value}"
                        checked="{if $item.checked}true{else}false{/if}"
                         />
                </td>
                <td style="border: 1px solid black; padding: 5px;">
                    {$item.text|escape:"javascript"}
                </td>
                <td style="border: 1px solid black; padding: 5px;">
                    <input
                        type="text"
                        class="textfield x-form-text x-form-field"
                        id="tv{$tv->id}rolename"
                        value="{$item.rolename}"
                        name="tv{$tv->id}rolename" />
                </td>
            </tr>


        {/foreach}
    </tbody>
</table>
Код остальных файлов для своего TV оставил такой же как у checkbox (имена и пути к файлам изменил).

Нужна быстрая победа над проблемой или хотя бы направление/ссылки/плагины/модули для решения проблемы. Спасибо
Ildar
01 августа 2015, 12:06
modx.pro
1
2 441
0

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

Виталий Серый
01 августа 2015, 15:20
0
Можно попробовать сделать через MIGX.
    Евгений Webinmd
    01 августа 2015, 16:12
    0
    MIGX решает эту проблемку легко.
    Если надо могу описать что как и куда вписывать.
      Ildar
      01 августа 2015, 16:15
      0
      Буду очень благодарен
      Евгений Webinmd
      01 августа 2015, 16:34
      +1
      Исходные данные:
      Актеры — контейнер с ресурсами-актерами
      Спектакли — контейнер с ресурсами-спектаклями
      2 TV поля (наименования для примера)

      — TV поля

      — Первое поле
      Имя: actors
      Заголовок: Актеры
      Тип ввода: migx
      Шаблон который для спектакля

      Вкладки формы:
      [{"caption":"Актеры", "fields": [
          {"field":"name","caption":"Актер","inputTV":"actor_id"},
          {"field":"personaj","caption":"Имя персонажа"}
        ]
      }]


      Разметка колонок:
      [{
        "header": "Актер","dataIndex": "name"
      },{
        "header": "Имя персонажа", "dataIndex": "personaj"
      }]

      — Второе поле
      Имя: actor_id (не надо назначать никакому шаблону)
      Загловок: Актер
      Тип ввода: Список ресурсов (тут в родителя укажите id ресурса контейнера Актеры ну и остальные галки уже по желанию)

      — В итоге в админке у спектакля получим форму добавления актеров к спектаклю.
      При выводе migx-поля используйте сниппет getImageList, документация по нему есть полная.

      Там в поле [[+personaj]] будет храниться id ресурса Актера, с помощью pdoFields вытащите уже любые поля.
      Есть вариант в actor_id хранить сразу заголовок ресурса Актер или любое другое поле, это если ничего кроме имени актера и персонажа выводить ничего не надо.

      Если будет необходимоть в этом, пишите, там надо будет сменить тип поля actor_id + в возможные значения написать вызов сниппета pdoResources или любого другого для выборки заголовков

      Надеюсь понятно написал.
      Может есть вариант поинтереснее, с радостью его узнаю.
      Мог опечататься в названиях полей, смотрите внимательно, писал по другому примеру.
        Ildar
        01 августа 2015, 16:38
        0
        Спасибо большое. Думаю этого будет достаточно
        Илья Ваулин
        03 августа 2015, 08:00
        0
        У меня аналогичная задача. Нашел такое решение — Taxonomies — есть в репозитории.
        Все гуд, только русский барахлит: yadi.sk/i/ecVk7bAwiETiQ
        Где то есть конфликт кодировки, но где не могу найти.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6