При создании одного типа ноды, записывать значение в поле другого типа ноды

Главные вкладки

Аватар пользователя толстый толстый 21 марта 2019 в 22:22

Все привет!
Не могу понять, почему не работает правило (rules). Может кто-то с подобным сталкивался.
Есть типы нод "взнос" и "платеж", "платеж" имеет связь со "взносом" через Entity Reference по полю "field_vznos_plateg".
Пытаюсь передать значение из ноды "платеж" поля "field_sum_plateg" в ноду "взносы" поле "field_plategi_po_vznosu" (со множественным значением).

{ "rules_plata_po_vznosu" : {
    "LABEL" : "plata-po-vznosu",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert--plateg" : { "bundle" : "plateg" } },
    "IF" : [
      { "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "vznos" : "vznos" } } } },
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_sum_plateg" } },
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_vznos_plateg" } },
      { "data_is" : { "data" : [ "node:field-vznos-plateg:nid" ], "value" : [ "node:nid" ] } }
    ],
    "DO" : [
      { "list_add" : {
          "list" : [ "node:field-plategi-po-vznosu" ],
          "item" : [ "node:field-sum-plateg" ]
        }
      }
    ]
  }
}

Лучший ответ

Аватар пользователя толстый толстый 3 апреля 2019 в 21:10

Получилось с помощью Conditional Rules

{ "rules_plata_po_vznosu" : {
    "LABEL" : "plategi-po-vznosam",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_conditional" ],
    "ON" : { "node_insert--plateg" : { "bundle" : "plateg" } },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_sum_plateg" } },
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_vznos_plateg" } }
    ],
    "DO" : [
      { "entity_fetch" : {
          "USING" : { "type" : "node", "id" : [ "node:field-vznos-plateg:nid" ] },
          "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "mode_id" } }
        }
      },
      { "CONDITIONAL" : [
          {
            "IF" : { "entity_has_field" : { "entity" : [ "entity-fetched" ], "field" : "field_plategi_po_vznosu" } },
            "DO" : [
              { "list_add" : {
                  "list" : [ "entity-fetched:field-plategi-po-vznosu" ],
                  "item" : [ "node:field-sum-plateg" ]
                }
              }
            ]
          }
        ]
      }
    ]
  }
}

Комментарии

Аватар пользователя толстый толстый 31 марта 2019 в 19:26

Вроде бы все просто, а почему не работает не понятно.
Может кто знает, как тестить Rules, чтоб посмотреть на каком моменте перестает работать?

Аватар пользователя Orion76 Orion76 3 апреля 2019 в 22:00

толстый wrote:
Вроде бы все просто, а почему не работает не понятно.
Может кто знает, как тестить Rules, чтоб посмотреть на каком моменте перестает работать?

Где-то на страницах админки Rules есть настройки для включения "отладочных" сообщений (debug).

Аватар пользователя толстый толстый 3 апреля 2019 в 21:10

Получилось с помощью Conditional Rules

{ "rules_plata_po_vznosu" : {
    "LABEL" : "plategi-po-vznosam",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_conditional" ],
    "ON" : { "node_insert--plateg" : { "bundle" : "plateg" } },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_sum_plateg" } },
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_vznos_plateg" } }
    ],
    "DO" : [
      { "entity_fetch" : {
          "USING" : { "type" : "node", "id" : [ "node:field-vznos-plateg:nid" ] },
          "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "mode_id" } }
        }
      },
      { "CONDITIONAL" : [
          {
            "IF" : { "entity_has_field" : { "entity" : [ "entity-fetched" ], "field" : "field_plategi_po_vznosu" } },
            "DO" : [
              { "list_add" : {
                  "list" : [ "entity-fetched:field-plategi-po-vznosu" ],
                  "item" : [ "node:field-sum-plateg" ]
                }
              }
            ]
          }
        ]
      }
    ]
  }
}