public function HttpConfigRequestForm::validateJson in HTTP Client Manager 8.2
Validate JSON.
Parameters
array $element: The Form element.
\Drupal\Core\Form\FormStateInterface $form_state: The Form State instance.
File
- src/
Form/ HttpConfigRequestForm.php, line 262
Class
- HttpConfigRequestForm
- Class HttpConfigRequestForm.
Namespace
Drupal\http_client_manager\FormCode
public function validateJson(array &$element, FormStateInterface $form_state) {
$value = $element['#value'];
if (empty($value)) {
return;
}
if (is_string($value)) {
$form_state
->setError($element);
return;
}
/** @var \GuzzleHttp\Command\Guzzle\Parameter $param */
$param = $element['#command_param'];
$type = $param
->getType();
switch ($type) {
case 'array':
$is_valid = is_array($value);
break;
case 'object':
$is_valid = is_object($value) || array_values($value) !== $value;
break;
default:
$is_valid = FALSE;
}
if (!$is_valid) {
$message = $this
->t('Field @title has to be an @type. @var_type provided.', [
'@title' => $element['#title'],
'@type' => $type,
'@var_type' => ucfirst(gettype($value)),
]);
$form_state
->setError($element, $message);
if (!is_string($value)) {
$element['#value'] = json_encode($value, JSON_PRETTY_PRINT);
}
}
}