public function HttpConfigRequestForm::form in HTTP Client Manager 8.2
Same name and namespace in other branches
- 8 src/Form/HttpConfigRequestForm.php \Drupal\http_client_manager\Form\HttpConfigRequestForm::form()
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- src/
Form/ HttpConfigRequestForm.php, line 75
Class
- HttpConfigRequestForm
- Class HttpConfigRequestForm.
Namespace
Drupal\http_client_manager\FormCode
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
$serviceApi = $this->request
->get('serviceApi');
$commandName = $this->request
->get('commandName');
$http_config_request = $this->entity;
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('Label'),
'#maxlength' => 255,
'#default_value' => $http_config_request
->label(),
'#description' => $this
->t("Label for the Http Config Request."),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#default_value' => $http_config_request
->id(),
'#machine_name' => [
'exists' => '\\Drupal\\http_client_manager\\Entity\\HttpConfigRequest::load',
],
'#disabled' => !$http_config_request
->isNew(),
];
$form['service_api'] = [
'#type' => 'value',
'#value' => $serviceApi,
];
$form['command_name'] = [
'#type' => 'value',
'#value' => $commandName,
];
$form['parameters'] = [
'#type' => 'fieldset',
'#title' => $this
->t('parameters'),
'#tree' => TRUE,
];
$client = $this->httpClientFactory
->get($serviceApi);
$parameters = $http_config_request
->get('parameters');
/** @var \GuzzleHttp\Command\Guzzle\Parameter $param */
foreach ($client
->getCommand($commandName)
->getParams() as $param) {
$name = $param
->getName();
$form['parameters'][$name] = [
'#command_param' => $param,
'#title' => $this
->t($name),
'#type' => 'textarea',
'#rows' => 1,
'#required' => $param
->isRequired(),
'#default_value' => isset($parameters[$name]) ? $parameters[$name] : $param
->getDefault(),
'#description' => $param
->getDescription() ? $this
->t($param
->getDescription()) : '',
];
// Create a select list for parameters with enums.
if ($param
->has('enum')) {
$enum = $param
->getEnum();
$options = [
'' => $this
->t('- Select -'),
] + array_combine($enum, $enum);
$form['parameters'][$name]['#type'] = 'select';
$form['parameters'][$name]['#options'] = $options;
continue;
}
$type = $param
->getType();
switch ($type) {
case 'bool':
case 'boolean':
$form['parameters'][$name]['#type'] = 'checkbox';
$form['parameters'][$name]['#value_callback'] = [
$this,
'booleanValue',
];
break;
case 'integer':
case 'number':
$form['parameters'][$name]['#type'] = 'number';
$form['parameters'][$name]['#value_callback'] = [
$this,
'integerValue',
];
break;
case 'float':
case 'decimal':
$form['parameters'][$name]['#type'] = 'number';
$form['parameters'][$name]['#step'] = 'any';
$form['parameters'][$name]['#value_callback'] = [
$this,
'floatValue',
];
break;
case 'array':
case 'object':
$form['parameters'][$name]['#type'] = 'textarea';
$form['parameters'][$name]['#rows'] = 12;
$form['parameters'][$name]['#description'] .= '<div class="json-help">' . $this
->t('Example') . ': <small><pre>' . $this
->getJsonHelp($param) . '</pre></small></div>';
$form['parameters'][$name]['#attributes']['placeholder'] = $this
->t('Enter data in JSON format.');
$form['parameters'][$name]['#value_callback'] = [
$this,
'jsonString',
];
$form['parameters'][$name]['#element_validate'][] = [
$this,
'validateJson',
];
break;
}
}
// Show the token help.
$form['token_help'] = [
'#theme' => 'token_tree_link',
];
return $form;
}