Николай Ланец
15 июля 2015 г., 11:27

А вы знали, что TV-полю MIGX можно в форме указывать другие MIGX-поля?

Работаю с проектом. Возникла задача, что у товара может быть два поля-вариации, при чем структура вложенная. То есть, есть основной товар, у него есть модели (и у разных моделей разная цена), а у этих моделей надо указывать цветовые решения (к примеру). То есть есть одна модель зеленого и красного цветов, вторая модель зеленого, синего и белого цвета и т.п. При чем этим моделям надо еще иметь возможность индивидуальные картинки указать, чтобы на странице товара при выборе конкретной вариации модели еще и картинки автоматически менялись. Так вот, до этого модели были без вариаций (то есть просто перечислялись модели и их цены, но без вложенных цветовых вариаций), и это было реализовано на Миге. Сейчас задача расширилась, и думая как ее реализовать, я подумал «а почему не указать в конфигурации MIGX-формы другое MIGX-TV-поле? Технически этому вроде как ничто не мешает.».
Попробовал. Работает :) http://dl2.joxi.net/drive/0005/1231/333007/150715/0bcc2edc79.jpg
А что самое интересное — можно указывать и текущее TV-поле. То есть вложенность может какой угодно быть. И здесь я еще раз хочу обратить внимание на то, что в первую очередь это демонстрирует силу ExtJS. Поэтому еще раз: учите ExtJS!
Мне данный вариант решения подходит, так как сейчас не стоит задача поиска и фильтрации по этим вариациям. Эти данные будут обрабатываться уже при получении найденного товара.
Да, руки не доходят топик написать — тоже недавно делал: ? Для такого трюка нужно использовать рендерер this.renderChunk ? ? И сам чанк:
[[!getImageList? &value=`[[+views]]` &tpl=`viewsTpl`]]
Сниппет getImageList входит в набор MIGX, а чанк viewsTpl просто выводит картинку, нароимер у меня так:
<img src="[[pThumb?input=`/assets/images/[[+img]]`&options=`w=60&h=75`]]"/>
Во какая кастомизация! :) На самом деле с мигой можно много чего интересного вытворять!
Точно :) Плохо только что документации маловато. И практически все на английском. Но вещь действительно мощная и полезная!
Александр а как это будет выглядеть в 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"} ]} ]
Не выводит
я пользовался визуальной средой. Но если открыть в тексте, то колонки показывает так:
[{"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":""}]
Упс…
[{«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»:""}]
[ {"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"} ]
Поидее так должно бы работать но вообще не выводит вообще пропадает таблица
Просто если делать через MIGX CMP это же пакет собирать выходит только?
Просто если делать через MIGX CMP это же пакет собирать выходит только?
Не понял вопрос. Если для дальнейшего использования — думаю, можно просто экспорт сделать. Но на самом деле, обычно конфигурации разные, и мне проще заново руками сделать, времени не много требуется
Нет я имею ввиду что я просто создал тв-ку на 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"} ]
Все на этом, больше никаких настроек нигде я не делал
listviews — типа migx — там все отлично отображается и добавляется
в чанке tpl — вызов сниппета как в твоем примере
«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":"" } ] }
ну да правильно еще одна тв-ка типа migx
просто не много наверное я недопонял как через конфиг это сделать
Получается создавать новую таблицу в бд через MIGX конфигуратор значит только для данной реализации?
Сделал конфиг указал в переменной 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":""}]
это старые записи сейчас при сохранении фоток нет но в переменной такая запись
[{"MIGX_id":"1","color":"colortv","fotos":"","price":"444","fotos_ro":"","_this.value":"[{\"MIGX_id\":\"1\",\"foto\":\"products/No-Photo.jpg\"}]"}]
выводит но при перезагрузке страницы, или редактировании, в чем трабл может быть кто сталкивался?
в смысле при перезагрузке ресурса или редактировании — пусто, хотя в переменной есть значения
Александр даже нашел твой пост... по этому поводу…
Удалось решить?
да, через renderchunk. Все, как в том посте описано
Сейчас немного разгружусь — сделаю топик как пошагово сделать. сейчас времени нет абсолютно
да просто в паре слов скажи, в чем трабл может быть, все делаю как в посте

Добавить комментарий