Drupal 在规则条件下访问实体(内容)数据-异常行为

Drupal 在规则条件下访问实体(内容)数据-异常行为,drupal,drupal-7,organic-groups,drupal-rules,Drupal,Drupal 7,Organic Groups,Drupal Rules,我对drupal还很陌生,但因为我的朋友让我帮助他,所以我有点陷入了困境。我设法使许多事情都能顺利进行,但有一个问题我无法解决。以下是我努力实现的目标: 将有一些课程用节点实体表示为OG组。每门课程的内容类型为“课程”(实体类型为节点),并有其价格。在规则中,我试图检查用户是否有足够的积分来加入课程,从而在“保存og成员资格之前”事件中触发它。若用户并没有足够的资金,我想中止OG成员资格保存并抛出一些错误 很简单,但有些问题我没想到会出现。这就是我所做/拥有的: 每个用户都有一个名为“fiel

我对drupal还很陌生,但因为我的朋友让我帮助他,所以我有点陷入了困境。我设法使许多事情都能顺利进行,但有一个问题我无法解决。以下是我努力实现的目标:

将有一些课程用节点实体表示为OG组。每门课程的内容类型为“课程”(实体类型为节点),并有其价格。在规则中,我试图检查用户是否有足够的积分来加入课程,从而在“保存og成员资格之前”事件中触发它。若用户并没有足够的资金,我想中止OG成员资格保存并抛出一些错误

很简单,但有些问题我没想到会出现。这就是我所做/拥有的:

  • 每个用户都有一个名为“field credit”的自定义字段,这并没有问题,因为我可以通过site:current user:field credit在规则中的任何时间和任何地方访问它
  • 课程只是一个简单的OG组,其节点实体的自定义内容类型为“课程”,它定义了用于存储课程价格的自定义字段“字段价格”
在规则模块(通过UI)中,我制定此类规则:

  • “保存og成员资格之前”事件触发
  • 条件如下(按顺序):
    • 实体[og membership:group:Entity]的类型为Node(确保我可以访问内容类型)
    • 内容[og membership:group:entity]属于课程类型(确保我可以访问特定于课程的字段)
    • 数据比较:[站点:当前用户:字段信用]低于[og成员:组:实体:字段价格]
  • 这里有一些我不能完全理解的东西-在添加这些条件(实体类型表示我正在使用节点,节点内容类型表示我正在使用课程)后,我可以在数据选择器中看到我需要的所有字段,因此规则应该知道并使用它们。但事实上,他们不在那里!当我显示包含[og membership:group:entity:field price]的消息时(仍然可以通过数据选择器访问),它不会显示课程价格,就像没有这样的变量一样。我可以在操作中获取实体,但这没有用,因为在条件中看不到获取的实体(内容),甚至无法通过数据选择器访问它以供进一步使用,例如“计算值”操作,因为它不知道其(实体)内容类型(但是[fetched entity:field price]在显示的消息中转换为实际的课程价格,但它不在数据选择器中列出)

    谁能告诉我,为什么会发生这种情况,或者更好,如何解决它?我不想为某些东西编写自己的模块,这可以通过开箱即用的规则来实现,但这种行为已经困扰了我两天了

    系统正在Drupal 7 btw上运行


    编辑:在“保存新内容后”的规则触发中,通过检查内容类型(内容[节点]的类型当然是课程),所有内容都按预期设置,因此我非常确定课程的所有字段都可用。

    尽管我很不情愿,但我必须使用组件来完成此操作。组件采用两个参数-节点实体(当然是类型)和用户实体。正在比较组件中的用户学分和课程价格。一切(好的,关于这个问题的一切)都按预期工作,我只需要首先在规则操作中获取课程实体(按实体id),并向组件提供结果变量