Drupal 7 带有Filefield的触发器规则';当字段已更改时';在Drupal 7中
我有一套不同的规则来检查“在更新现有内容之后”是否更新了各种字段类型。问题是,除了唯一不起作用的文件字段类型之外,每种类型都可以正常工作。使用的条件是字段上的“非数据比较”,检查“节点未更改”版本与新的“节点”版本。这适用于所有其他类型的字段和操作(我至少使用过),而不是filefield类型;无论文件字段是否发生更改,规则都会触发 我还发现了一个非常类似的问题: 我想我已经具备了解决问题的能力,但我只是想先和一些其他开发人员核实一下,因为我的PHP不是最好的 如果我要启用PHP模块,那么在规则中添加一个条件,检查“source”属性以查看是否添加了新文件。。。这样行吗?我的密码是:Drupal 7 带有Filefield的触发器规则';当字段已更改时';在Drupal 7中,drupal-7,rules,filefield,Drupal 7,Rules,Filefield,我有一套不同的规则来检查“在更新现有内容之后”是否更新了各种字段类型。问题是,除了唯一不起作用的文件字段类型之外,每种类型都可以正常工作。使用的条件是字段上的“非数据比较”,检查“节点未更改”版本与新的“节点”版本。这适用于所有其他类型的字段和操作(我至少使用过),而不是filefield类型;无论文件字段是否发生更改,规则都会触发 我还发现了一个非常类似的问题: 我想我已经具备了解决问题的能力,但我只是想先和一些其他开发人员核实一下,因为我的PHP不是最好的 如果我要启用PHP模块,那么在规则
if (isset($object->field_FILEFIELD_NAME[0]['source'])) { //Check for new files }
我相信$object是规则函数作为参数传递的节点
这是一个好主意/最佳方法吗?任何想法或解决方法都会很好。是的,您可以使用PHP进行文件字段检查,因为它更清晰(但总是不太安全)。以下是我的建议:
isset
,而是需要查看是否存在不同的fid(当存在不同的文件时,fid通常会发生变化)。其他方法也可用,如果您想查看哪些数据可以更改,请使用devel模块对文件字段执行dpm()
为了获得文件字段的未更改的值,请在主规则上使用相同的组件,但使用$unchanged节点作为参数。多亏了DOROS,我将尝试一下!