Связь между ресурсами с дополнительными параметрам
Добрый день. Сразу к делу. У меня есть два ресурса Актеры и Спектакли. Нужно связать эти два ресурса таким образом, чтобы когда я просматривал карточку спектакля, я мог видеть всех актеров, участвующих в спектакле с именем персонажа в спектакле. А в админке, когда я редактирую спектакль я должен выбрать/указать актера и написать рядом имя его персонажа в спектакле.
Как я пытался сделать:
1) Создал новый TV с типом checkbox, в поле возможные значения написал запрос, чтобы вытаскивались все актеры. Не подошло, потому что нужно указывать имя персонажа
2) Пробовал создать свой TV из того же checkbox. Добавил дополнительное текстовое поле. В админке форма отображалась, но ничего не сохранялось. Код шаблона(/manager/templates/default/element/tv/renders/inputcheckboxwithparams.tpl):
Нужна быстрая победа над проблемой или хотя бы направление/ссылки/плагины/модули для решения проблемы. Спасибо
Как я пытался сделать:
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 (имена и пути к файлам изменил).Нужна быстрая победа над проблемой или хотя бы направление/ссылки/плагины/модули для решения проблемы. Спасибо
Комментарии: 6
Можно попробовать сделать через MIGX.
MIGX решает эту проблемку легко.
Если надо могу описать что как и куда вписывать.
Если надо могу описать что как и куда вписывать.
Буду очень благодарен
Исходные данные:
Актеры — контейнер с ресурсами-актерами
Спектакли — контейнер с ресурсами-спектаклями
2 TV поля (наименования для примера)
— TV поля
— Первое поле
Имя: actors
Заголовок: Актеры
Тип ввода: migx
Шаблон который для спектакля
Вкладки формы:
Разметка колонок:
— Второе поле
Имя: actor_id (не надо назначать никакому шаблону)
Загловок: Актер
Тип ввода: Список ресурсов (тут в родителя укажите id ресурса контейнера Актеры ну и остальные галки уже по желанию)
— В итоге в админке у спектакля получим форму добавления актеров к спектаклю.
При выводе migx-поля используйте сниппет getImageList, документация по нему есть полная.
Там в поле [[+personaj]] будет храниться id ресурса Актера, с помощью pdoFields вытащите уже любые поля.
Есть вариант в actor_id хранить сразу заголовок ресурса Актер или любое другое поле, это если ничего кроме имени актера и персонажа выводить ничего не надо.
Если будет необходимоть в этом, пишите, там надо будет сменить тип поля actor_id + в возможные значения написать вызов сниппета pdoResources или любого другого для выборки заголовков
Надеюсь понятно написал.
Может есть вариант поинтереснее, с радостью его узнаю.
Мог опечататься в названиях полей, смотрите внимательно, писал по другому примеру.
Актеры — контейнер с ресурсами-актерами
Спектакли — контейнер с ресурсами-спектаклями
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 или любого другого для выборки заголовков
Надеюсь понятно написал.
Может есть вариант поинтереснее, с радостью его узнаю.
Мог опечататься в названиях полей, смотрите внимательно, писал по другому примеру.
Спасибо большое. Думаю этого будет достаточно
У меня аналогичная задача. Нашел такое решение — Taxonomies — есть в репозитории.
Все гуд, только русский барахлит: yadi.sk/i/ecVk7bAwiETiQ
Где то есть конфликт кодировки, но где не могу найти.
Все гуд, только русский барахлит: yadi.sk/i/ecVk7bAwiETiQ
Где то есть конфликт кодировки, но где не могу найти.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.