MIGX и MIGXdb как осуществить замену значения

Доброе время суток.

Кто использовал MIGX или MIGXdb.

Вопрос такой как корректно поменять значение параметра.

Насколько я понял MIGX завязывает между собой уже существующие TV так что тут вроде бы просто можно обратится прямо к нужной TV и сменить ее значение.

А вот в MIGXdb, TV хранятся в отдельной таблице

Может кто что подскажет?

Пример:

Я создаю товар у которого есть какой то перечень характеристик — цвет к примеру

количество цвет статус

5 красный (radio=1)

3 синий (radio=1)

Купили к примеру 3 синих и количество по складу стало 0
Чтобы убрать из товара на сайте цвет мне нужно значение radio поставить 0.

Либо когда товар с таким цветом снова стал больше нуля включить его выдачу.

Как то так
Николай
26 октября 2012, 22:06
modx.pro
3 517
0

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

Евгений Дурягин
27 октября 2012, 13:56
0
В MIGXdb вы же сами таблицу описываете и определяете какие в ней поля должны быть.
Вот и обращайтесь к этой таблице как и к любой другой, через xPDO.
А TV используется только для отрисовки значение поля.
    Николай
    28 октября 2012, 01:48
    0
    Дело то в том что вроде бы у бруно в MIGXdb заложен этот функционал, просто не описан насколько я понял сам класс migx наследует методы modx, а в конфигурации есть поле classname где указывается имя объекта, при этом в мануале есть такие строчки…
    ______________________________________________________________
    Register the TVs for our processors (getlist,fields)

    We need to register TVs to include them in the getlist- and fields-processors.
    Todo so we need a new config-file under /core/components/migx/configs/

    with the same name as our MIGX-configuration: childstutorial.config.inc.php (should allready be installed with the MIGX-package)
    and this content:

    /core/components/migx/configs/childstutorial.config.inc.php
    1
    2
    3
    <?php
    $this->customconfigs['includeTVs'] = 1;
    $this->customconfigs['includeTVList'] = 'price,images,categories';
    ___________________________________________________________________

    Насколько я понял после этого к переменным

    можно обращаться как то так myClass->setTVValue(«prise»,$prise);

    просто если это так то зачем делать велосипед… тем более не факт, что он выйдет лучше ))
      Евгений Дурягин
      28 октября 2012, 12:54
      0
      Вы смотрите пример как в таблице отображать ресурсы с TV. Вам это надо?
      Поэтому и работает myClass->setTVValue(«prise»,$prise), т.к. myClass скорей всего является наследником modResource, а значение хранится в TV.

      Или все же вам надо у каждого ресурса сделать список значений в виде таблицы и хранить это все в базе?
        Николай
        29 октября 2012, 00:47
        0
        Как отображать описано вмануале это все ясно… у меня вопрос как правильно (через скрипт) манипулировать уже имеющимся в TV данными

        Я понимаю, что это все хранится в базе в виде JSON массива и мне просто нужно переформировав его перезаписывать… это самый очевидный вариант.

        Но если для этого уже в пакете предусмотрен инструмент почему бы не воспользоватся им… ))

        У меня просто руки не доходят потеснить это дело я вот и спросил МБ кто уже плавал знает
          Евгений Дурягин
          29 октября 2012, 11:41
          0
          Дак вы используете MIGX или все-таки MIGXdb?
          MIGXdb данные хранит не в JSON, а в таблице, которую вы сами же и определяете. А доступ к ней можно сделать через xPDO $modx->getObject, $modx->getCollection итд
    Виталий Батушев
    28 октября 2012, 00:08
    0
    Вы ошибаетесь на счет MIGX. MIGX не связывает TV, а как исключительно верно указал Евгений Дурягин, использует их для указания на то, как их рендерить в форме ресурса. Значение же самого TV типа MIGX — это JSON-строка. Я бы не стал заморачиваться на MIGXdb для создания TV для товара, для этого подойдет «обычный» TV типа migx. Изменять цену можно с помощью msGetPrice. Пишете там функцию, которая распарсивает значение вашего TV типа MIGX и изменяет цену согласно этому значению. Как-то так.
      Николай
      28 октября 2012, 01:52
      0
      нужно менять как раз не цену, а содержимое MIGX элемента в зависимости от количества товара на складе, включать или выключать цвет к примеру
        Николай
        28 октября 2012, 01:55
        0
        просто к сожалению мануал по MIGX весьма скудный, и автор не описывает что для чего((
        … ткните сюда ткните туда, вуаля вы получили счастье и код вообще без комментариев практически…

        С кодом Василия несравнить
          Виталий Батушев
          28 октября 2012, 03:00
          0
          Мануал или код все-таки? Мануал MIGX, конечно, довольно скромный, но это больше касается MGIX-db, а с самим MIGX там особо нечего разбираться. Я мигиксы в каждом проекте использую. Пару-тройку раз migx-db, остальные — «обычный».
          Виталий Батушев
          28 октября 2012, 02:57
          0
          Ну можно и это. Я ж не в курсе, что конкретно Вам надо. Можете, просто, скажем, сделать TV с полями, где одно это цвет товара, а другое количество товара этого цвета. При продаже товара с этим цветом — меняете количество. Когда количество равно нулю, при генерации listbox-а просто игнорируете создание option этого цвета.
            Николай
            28 октября 2012, 04:20
            0
            угу я именно так и планирую просто… интересует как правильнее это делать)
        Николай
        08 ноября 2012, 01:08
        0
        Кто может подсказать где найти информацию о renderera — х какие есть и для чего используются в мануале упоминается только renderImage.

        Либо где по коду посмотреть.

        Есть поле где использую чекбокс так вот когда добавляю строку чек бокс неотрисовывается

        {"field":"on_off_status","caption":"Вкл/Выкл","inputTV":"on_off_status_MigxTV"},


        {"header": "Статус публикации", "width": "100", "sortable": "false", "dataIndex": "on_off_status","renderer": " Какой то рендер нужен "}
          Серьёзный
          25 октября 2013, 21:36
          0
          Меня тоже интересует инфа о renderer
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            13