我对drupal很新,但是既然朋友让我帮助他,我就进入了它。我设法让许多事情发挥作用,但有一个问题我无法理解。这是我想要实现的目标:
将有一些课程表示为具有Node实体的OG组。每门课程的内容类型为“课程”(实体属于Node类型)并且有其价格。在规则中,我试图检查用户是否有足够的信用加入课程,从而在“保存og会员资格之前”事件中触发它。如果用户没有足够的资金,我想中止OG会员保存并抛出一些错误。
非常直截了当但是,有些问题我没想到会出现。这就是我的所作所为:
在规则模块中(通过UI)我制定了这样的规则:
这里有一些我无法完全理解的东西 - 在添加这些条件后(实体类型说我正在使用Node,Node类型说我正在使用Course),我可以看到我需要的所有字段数据选择器,因此规则应该知道它们并使用它们。但实际上,他们不在那里!当我在其中显示[og-membership:group:entity:field-price]的消息时(仍然可以通过数据选择器访问),它不会显示课程价格,就像没有这样的变量一样。我可以在动作中进行实体获取,但这没有用,因为在条件中不会看到获取的实体(内容),甚至无法通过数据选择器访问它以进一步使用,例如使用“计算值”操作,因为它不知道它的(实体)内容类型(但是[fetched-entity:field-price]在显示的消息中被转换为实际课程价格,它只是没有在数据选择器中列出。)
任何人都可以说,为什么会发生这种情况或更好,如何解决?我不想为自己的某些东西编写自己的模块,这可以通过开箱即用的规则来实现,但这种行为已经让我困扰了2天。
系统正在Drupal 7 btw上运行。
编辑:在“保存新内容后”的规则触发中,所有内容都按预期设置,并检查内容类型(内容[节点]类型为课程),因此我非常确定当然所有字段都可用。答案 0 :(得分:0)
不像我一样,我不得不使用组件。 Component有两个参数 - 节点实体(类型为Course)和User实体。在组件中正在比较用户信用和课程价格。一切(好吧,关于这个问题的一切)按预期工作,我只需要先在规则操作中获取课程实体(按实体ID),然后将结果变量提供给组件。