如何检查是否选中了一个开/关复选框?


8

在“规则”模块的数据选择器中,似乎没有任何方法可以检查单个“开/关(布尔)”复选框的值。如果“ field-MyField” =已选中或“ field-MyField” = 1,则执行“ blah”。规则可以做到吗?我肯定错过了什么


执行以下操作时,无法使用自定义PHP:echo([node:field-MyField] == 1);。PHP之所以有效,是因为如果我只返回true ;,那么它就起作用了。那么发生了什么???!?
user785179 2012年

好吧,事实证明您不能在自定义PHP中使用令牌。
user785179 2012年

Answers:


6

这里混合了正确和错误的详细信息,因此我将尝试对其进行梳理。这适用于Drupal 7上的规则,适用于使用布尔字段。

要使条件能够检查字段的布尔状态(是/否,是/否,选中/未选中),请首先确保您可以在数据选择器中访问该字段。正如Bojan前面提到的那样,就像在管理页面上提到的那样,

要使实体字段出现在数据选择器中,您可能必须使用条件“实体具有字段”(或“内容属于类型”)。

您要选择的运算符为“等于”。

对于“数据值”字段,可以在两种模式下输入值,请确保使用的是“直接输入模式”。然后,您应该能够选中表示该字段为TRUE的复选框。

翻译后,您要说的是:“此字段等于TRUE吗?” 您也可以通过取消选中它或使用下面的“否定”选项来否定它。


感谢您抽出宝贵的时间对此进行解释。我不必再碰类似的事情,但是您的解释是有道理的。我希望它可以帮助其他人。
user785179 '11

3

您只需添加“数据比较”条件,指定字段名称,然后输入“ 1”作为值。如果该字段未出现在字段列表中,请首先添加“实体具有字段”条件,然后在此处选择该字段。然后,接下来添加“数据比较”。


我在数据值中放入1,然后得到:参数值的数据选择器1无效。还有其他想法吗?为了澄清,我要比较的数据字段是node:field-MyField。比较设置为“等于”。的数据值设置为1
user785179

2

经过数小时的反复试验,我终于解决了问题。不要要求我解释这一点,因为这对我来说毫无意义。如果有人可以解释,那将不胜感激!

我使用数据比较设置了新条件。然后,我选择“ node:field-MyField:0”(实际上最多有4个-node:field-MyField:1,node:field-MyField:2,依此类推。)然后,将“比较”设置为“等于”。然后,在第二个数据选择器部分,它不再是文本输入框数据选择器,而是现在显示为复选框数据选择器。当我单击该复选框数据选择器并单击“保存”时,规则模块现在可以正常工作。

刘海头在墙上


0

在更新的(固定的?)版本的规则中,要执行此操作,添加一个数据比较条件,在数据选择器中选择适当的字段node:field-to-check,然后在下一步中将比较运算符保留为equals。在“数据值”组中,将有一个名为“数据值”的复选框,规则将与此页面上提交的复选框的值进行比较。


0

您最有可能必须使用“规则表单支持”

激活特定表单的表单规则后,可以使用以下条件:Form元素具有value构建表单或验证表单时可以使用此条件。

其他要考虑的模块是实体规则

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.