Fi1osof 15 июля 2015 5 8
Работаю с проектом. Возникла задача, что у товара может быть два поля-вариации, при чем структура вложенная. То есть, есть основной товар, у него есть модели (и у разных моделей разная цена), а у этих моделей надо указывать цветовые решения (к примеру). То есть есть одна модель зеленого и красного цветов, вторая модель зеленого, синего и белого цвета и т.п. При чем этим моделям надо еще иметь возможность индивидуальные картинки указать, чтобы на странице товара при выборе конкретной вариации модели еще и картинки автоматически менялись. Так вот, до этого модели были без вариаций (то есть просто перечислялись модели и их цены, но без вложенных цветовых вариаций), и это было реализовано на Миге. Сейчас задача расширилась, и думая как ее реализовать, я подумал «а почему не указать в конфигурации MIGX-формы другое MIGX-TV-поле? Технически этому вроде как ничто не мешает.».

Попробовал. Работает :)


А что самое интересное — можно указывать и текущее TV-поле. То есть вложенность может какой угодно быть. И здесь я еще раз хочу обратить внимание на то, что в первую очередь это демонстрирует силу ExtJS. Поэтому еще раз: учите ExtJS!

Мне данный вариант решения подходит, так как сейчас не стоит задача поиска и фильтрации по этим вариациям. Эти данные будут обрабатываться уже при получении найденного товара.
8 комментариев
Tramp13571
Tramp1357 15 июля 2015г в 15:13 #
Да, руки не доходят топик написать — тоже недавно делал:

Для такого трюка нужно использовать рендерер this.renderChunk


И сам чанк:
[[!getImageList? &value=`[[+views]]` &tpl=`viewsTpl`]]

Сниппет getImageList входит в набор MIGX, а чанк viewsTpl просто выводит картинку, нароимер у меня так:
<img src="[[pThumb?input=`/assets/images/[[+img]]`&options=`w=60&h=75`]]"/>
Tramp13571
Tramp1357 15 июля 2015г в 15:18 #
Подправил картинки
Fi1osof1
Fi1osof 15 июля 2015г в 15:21 #
Во какая кастомизация! :)
На самом деле с мигой можно много чего интересного вытворять!
Tramp13571
Tramp1357 15 июля 2015г в 15:24 #
Точно :)
Плохо только что документации маловато. И практически все на английском. Но вещь действительно мощная и полезная!
А
Андрей Балкин 01 августа 2015г в 18:57 #
Александр а как это будет выглядеть в JSON в поле FormTABS переменной migx пишу так

[
{"caption":"Foto", "fields": [
    {"field":"color","caption":"color"},
    {"field":"foto","caption":"Foto","inputTV":"listviews","renderer": "this.renderChunk", "Renderoptions" : [
    {"name" : "tpl"}
]},
    {"field":"price","caption":"Price"}
]}
]


Не выводит
Tramp13571
Tramp1357 01 августа 2015г в 21:36 #
я пользовался визуальной средой. Но если открыть в тексте, то колонки показывает так:
[{"MIGX_id":"1","header":"Материал, цвет","dataIndex":"option","width":"100","sortable":"true","show_in_grid":"1","renderer":"","clickaction":"","selectorconfig":"","renderchunktpl":"","renderoptions":"","editor":"this.textEditor"},{"MIGX_id":"2","header":"Цена","dataIndex":"price","width":"100","sortable":"false","show_in_grid":"1","renderer":"","clickaction":"","selectorconfig":"","renderchunktpl":"","renderoptions":"","editor":"this.textEditor"},{"MIGX_id":"4","header":"Дополнительные фото","dataIndex":"listviews","width":"800","sortable":"false","show_in_grid":"1","renderer":"this.renderChunk","clickaction":"","selectorconfig":"","renderchunktpl":"","renderoptions":"[{\"MIGX_id\":\"1\",\"name\":\"listViews\",\"use_as_fallback\":\"\",\"value\":\"\",\"clickaction\":\"\",\"handler\":\"\",\"image\":\"\"}]","editor":""}]
Tramp13571
Tramp1357 01 августа 2015г в 21:37 #
Упс…

[{«MIGX_id»:«1»,«header»:«Материал, цвет»,«dataIndex»:«option»,«width»:«100»,«sortable»:«true»,«show_in_grid»:«1»,«renderer»:"",«clickaction»:"",«selectorconfig»:"",«renderchunktpl»:"",«renderoptions»:"",«editor»:«this.textEditor»},{«MIGX_id»:«2»,«header»:«Цена»,«dataIndex»:«price»,«width»:«100»,«sortable»:«false»,«show_in_grid»:«1»,«renderer»:"",«clickaction»:"",«selectorconfig»:"",«renderchunktpl»:"",«renderoptions»:"",«editor»:«this.textEditor»},{«MIGX_id»:«4»,«header»:«Дополнительные фото»,«dataIndex»:«listviews»,«width»:«800»,«sortable»:«false»,«show_in_grid»:«1»,«renderer»:«this.renderChunk»,«clickaction»:"",«selectorconfig»:"",«renderchunktpl»:"",«renderoptions»:"[{\«MIGX_id\»:\«1\»,\«name\»:\«listViews\»,\«use_as_fallback\»:\"\",\«value\»:\"\",\«clickaction\»:\"\",\«handler\»:\"\",\«image\»:\"\"}]",«editor»:""}]
А
Андрей Балкин 01 августа 2015г в 21:50 #
[
{"header": "Color", "width": "160", "sortable": "true", "dataIndex": "color"},
{"header": "Foto", "width": "50", "sortable": "false", "dataIndex": "foto","renderer": "this.renderChunk","renderoptions":"[{\"MIGX_id\":\"1\",\"name\":\"tpl\",\"use_as_fallback\":\"\",\"value\":\"\",\"clickaction\":\"\",\"handler\":\"\",\"image\":\"\"}]"},
{"header": "Price", "width": "160", "sortable": "true", "dataIndex": "price"}
]


Поидее так должно бы работать но вообще не выводит вообще пропадает таблица
А
Андрей Балкин 01 августа 2015г в 21:52 #
Просто если делать через MIGX CMP это же пакет собирать выходит только?
Tramp13571
Tramp1357 01 августа 2015г в 22:09 #
Просто если делать через MIGX CMP это же пакет собирать выходит только?
Не понял вопрос. Если для дальнейшего использования — думаю, можно просто экспорт сделать. Но на самом деле, обычно конфигурации разные, и мне проще заново руками сделать, времени не много требуется
А
Андрей Балкин 02 августа 2015г в 10:09 #
Получается создавать новую таблицу в бд через MIGX конфигуратор значит только для данной реализации?
А
Андрей Балкин 02 августа 2015г в 10:42 #
Сделал конфиг указал в переменной migx. но не выводит картинки, причем теперь и не сохраняет добавление новых в переменную foto. фотки у меня в папке /PRODUCTS_IMG\275\ ну это для данного товара для след будут /PRODUCTS_IMG\276\, может с этим как то связано

[{"MIGX_id":"1","color":"Bianco","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bianco1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bianco2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bianco3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bianco4.jpg\"}]","price":""},{"MIGX_id":"2","color":"Bluette","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_blu1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_blu2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bluette3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_bluette4.jpg\"}]","price":""},{"MIGX_id":"3","color":"Cipria","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_cipria1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_cipria2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_cipria3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_cipria4.jpg\"}]","price":""},{"MIGX_id":"4","color":"Coloniale","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_coloniale1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_coloniale2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_coloniale3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_coloniale4.jpg\"}]","price":""},{"MIGX_id":"5","color":"Corallo","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_corallo1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_corallo2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_corallo3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_corallo4.jpg\"}]","price":""},{"MIGX_id":"6","color":"Emerald","foto":"[{\"MIGX_id\":\"1\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_emerald1.jpg\"},{\"MIGX_id\":\"2\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_emerald2.jpg\"},{\"MIGX_id\":\"3\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_emerald3.jpg\"},{\"MIGX_id\":\"4\",\"foto\":\"\/PRODUCTS_IMG\/275\/Bottega-275_emerald4.jpg\"}]","price":""}]
А
Андрей Балкин 02 августа 2015г в 11:37 #
это старые записи сейчас при сохранении фоток нет но в переменной такая запись
[{"MIGX_id":"1","color":"colortv","fotos":"","price":"444","fotos_ro":"","_this.value":"[{\"MIGX_id\":\"1\",\"foto\":\"products/No-Photo.jpg\"}]"}]
А
Андрей Балкин 02 августа 2015г в 12:37 #
выводит но при перезагрузке страницы, или редактировании, в чем трабл может быть кто сталкивался?
А
Андрей Балкин 02 августа 2015г в 14:24 #
в смысле при перезагрузке ресурса или редактировании — пусто, хотя в переменной есть значения
А
Андрей Балкин 02 августа 2015г в 16:07 #
Александр даже нашел твой пост... по этому поводу…

Удалось решить?
Tramp13571
Tramp1357 02 августа 2015г в 16:26 #
да, через renderchunk. Все, как в том посте описано
Tramp13571
Tramp1357 02 августа 2015г в 16:28 #
Сейчас немного разгружусь — сделаю топик как пошагово сделать. сейчас времени нет абсолютно
А
Андрей Балкин 02 августа 2015г в 16:30 #
да просто в паре слов скажи, в чем трабл может быть, все делаю как в посте
А
Андрей Балкин 01 августа 2015г в 22:13 #
Нет я имею ввиду что я просто создал тв-ку на input повесил стандартный migx

Form Tabs:

[
{"caption":"Foto", "fields": [
    {"field":"color","caption":"color"},
    {"field":"foto","caption":"Foto","inputTV":"listviews"},
    {"field":"price","caption":"Price"}
]}
]


Grid Columns:
[
{"header": "Color", "width": "20", "sortable": "true", "dataIndex": "color"},
{"header": "Foto", "width": "100", "sortable": "false", "dataIndex": "foto","renderer": "this.renderChunk","renderoptions":"[{\"name\":\"tpl\"}]"},
{"header": "Price", "width": "10", "sortable": "true", "dataIndex": "price"}
]


Все на этом, больше никаких настроек нигде я не делал
А
Андрей Балкин 01 августа 2015г в 22:15 #
listviews — типа migx — там все отлично отображается и добавляется

в чанке tpl — вызов сниппета как в твоем примере
Tramp13571
Tramp1357 01 августа 2015г в 22:16 #
«inputTV»:«listviews»
listviews — это MIGX переменная, в которой хранятся картинки:
{
  "formtabs":[
    {
      "MIGX_id":1,
      "caption":"\u0424\u043e\u0442\u043e",
      "print_before_tabs":"0",
      "fields":[
        {
          "MIGX_id":1,
          "field":"img",
          "caption":"\u0424\u043e\u0442\u043e",
          "description":"",
          "description_is_code":"0",
          "inputTV":"image",
          "inputTVtype":"",
          "validation":"",
          "configs":"",
          "restrictive_condition":"",
          "display":"",
          "sourceFrom":"config",
          "sources":"",
          "inputOptionValues":"",
          "default":"",
          "pos":1
        }
      ],
      "pos":1
    }
  ],
  "contextmenus":"",
  "actionbuttons":"",
  "columnbuttons":"",
  "filters":"",
  "extended":{
    "migx_add":"",
    "disable_add_item":"",
    "add_items_directly":"",
    "formcaption":"",
    "update_win_title":"",
    "win_id":"views",
    "maxRecords":6,
    "addNewItemAt":"bottom",
    "multiple_formtabs":"",
    "multiple_formtabs_label":"",
    "multiple_formtabs_field":"",
    "multiple_formtabs_optionstext":"",
    "multiple_formtabs_optionsvalue":"",
    "actionbuttonsperrow":4,
    "winbuttonslist":"",
    "extrahandlers":"",
    "filtersperrow":4,
    "packageName":"",
    "classname":"",
    "task":"",
    "getlistsort":"",
    "getlistsortdir":"",
    "sortconfig":"",
    "gridpagesize":"",
    "use_custom_prefix":"0",
    "prefix":"",
    "grid":"",
    "gridload_mode":1,
    "check_resid":1,
    "check_resid_TV":"",
    "join_alias":"",
    "has_jointable":"yes",
    "getlistwhere":"",
    "joins":"",
    "cmpmaincaption":"",
    "cmptabcaption":"",
    "cmptabdescription":"",
    "cmptabcontroller":"",
    "winbuttons":"",
    "onsubmitsuccess":"",
    "submitparams":""
  },
  "columns":[
    {
      "MIGX_id":1,
      "header":"\u0424\u043e\u0442\u043e",
      "dataIndex":"img",
      "width":50,
      "sortable":"false",
      "show_in_grid":1,
      "renderer":"this.renderImage",
      "clickaction":"",
      "selectorconfig":"",
      "renderchunktpl":"",
      "renderoptions":""
    }
  ]
}
А
Андрей Балкин 01 августа 2015г в 22:19 #
ну да правильно еще одна тв-ка типа migx
А
Андрей Балкин 01 августа 2015г в 22:48 #
просто не много наверное я недопонял как через конфиг это сделать
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.