public function DefaultStateHandler::statesHandler in Conditional Fields 4.x
Same name and namespace in other branches
- 8 src/Plugin/conditional_fields/handler/DefaultStateHandler.php \Drupal\conditional_fields\Plugin\conditional_fields\handler\DefaultStateHandler::statesHandler()
Executes states handler according to conditional fields settings.
Overrides ConditionalFieldsHandlersPluginInterface::statesHandler
File
- src/
Plugin/ conditional_fields/ handler/ DefaultStateHandler.php, line 20
Class
- DefaultStateHandler
- Provides states handler for text fields.
Namespace
Drupal\conditional_fields\Plugin\conditional_fields\handlerCode
public function statesHandler($field, $field_info, $options) {
// Build the values that trigger the dependency.
$values = [];
$values_array = $this
->getConditionValues($options);
$values_set = $options['values_set'];
switch ($values_set) {
case ConditionalFieldsInterface::CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET:
$values[$options['condition']] = $options['value_form'];
break;
case ConditionalFieldsInterface::CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX:
$values[$options['condition']] = [
'regex' => $options['regex'],
];
break;
case ConditionalFieldsInterface::CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR:
$values[$options['condition']] = [
'xor' => $values_array,
];
break;
case ConditionalFieldsInterface::CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND:
$values[$options['condition']] = count($values_array) == 1 ? $values_array[0] : $values_array;
break;
default:
if ($options['values_set'] == ConditionalFieldsInterface::CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT) {
$options['state'] = '!' . $options['state'];
}
// OR, NOT conditions are obtained with a nested array.
if (!empty($values_array)) {
foreach ($values_array as $value) {
$values[] = [
'value' => $value,
];
}
}
else {
$values = $options['values'];
}
break;
}
$state = [
$options['state'] => [
$options['selector'] => $values,
],
];
return $state;
}