我有一个实地集,只有选择框选择了一些选定的选项之一时才出现。问题是,我似乎看不到如何使用 OR。如果您在数组中包含多个条件,它会像 AND 一样操作。例如,如果选择框的值为 1 2 或 3,我需要它工作。
问问题
3275 次
3 回答
5
显然从 drupal 7.14 开始支持“或”和“异或”。它只是不在文档中任何容易找到的地方。这是我做的一个例子,以防有人需要它。这行得通。
$form['survey'] = array(
'#type' => 'fieldset',
'#collapsible' => FALSE,
'#states' => array(
'visible' => array(
array(
array(':input[name="measurementmethod"]' => array('value'=>'5')),
'xor',
array(':input[name="measurementmethod"]' => array('value'=>'6')),
'xor',
array(':input[name="measurementmethod"]' => array('value'=>'7'))
)
)
)
);
于 2012-10-09T00:32:18.630 回答
4
总结LoneWolfPR的回答
这将是 AND:必须选中两个复选框才能生效
array(
':input[name^="field_checkbox_1"]' => array('checked' => TRUE),
':input[name^="field_checkbox_2"]' => array('checked' => TRUE),
)
这将是 OR(将单个条件放入数组中):必须选中一个或两个复选框
array(
array(':input[name^="field_checkbox_1"]' => array('checked' => TRUE)),
array(':input[name^="field_checkbox_2"]' => array('checked' => TRUE)),
)
这将是 XOR(就像 or 并且在数组之间带有“xor”):必须检查一个且只有一个 checkox
array(
array(':input[name^="field_checkbox_1"]' => array('checked' => TRUE)),
'xor',
array(':input[name^="field_checkbox_2"]' => array('checked' => TRUE)),
)
于 2014-07-30T12:30:27.833 回答
1
参考更改记录“ Fixed conditionals to allow OR and XOR constructions ” on do
从 7.14 开始,Drupal 表单 API#state
支持 OR 和 XOR 条件。
以下代码允许条件:dependee_1 OR (dependee_2 OR dependee_3) OR (dependee_4 XOR dependee_5)
<?php
$form['dependent_1']['#states'] = array(
'disabled' => array(
// dependee_1 has value ON
'[name="dependee_1"]' => array('value' => 'ON'),
array(
// At least one of dependee_2 or dependee_3 has value ON
array('[name="dependee_2"]' => array('value' => 'ON')),
array('[name="dependee_3"]' => array('value' => 'ON')),
),
array(
// Only one of dependee_4 or dependee_5 can have value ON
array('[name="dependee_4"]' => array('value' => 'ON')),
'xor',
// The field should be disabled when Select #1 has value ON; at least one
// of Select #2 and Select #3 has value ON; one but only one of Select #4
// and Select #5 has value ON.
array('[name="dependee_5"]' => array('value' => 'ON')),
),
)
);
?>
基本上,对象字面量 ({ ... }) 中的所有元素都是 AND,数组字面量 ([ ... ]) 中的所有元素都是 ORed;如果数组的第一个元素是 'xor' 条件是 XORed。
于 2013-09-25T13:16:12.633 回答