public function ShortenShortenForm::buildForm in Shorten URLs 8.2
Same name and namespace in other branches
- 8 src/Form/ShortenShortenForm.php \Drupal\shorten\Form\ShortenShortenForm::buildForm()
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- src/
Form/ ShortenShortenForm.php, line 24
Class
- ShortenShortenForm
- Builds a form which allows shortening of a URL via the UI.
Namespace
Drupal\shorten\FormCode
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
$form_state_values = $form_state
->getValues();
$storage =& $form_state
->getStorage();
$form['#attached']['library'][] = 'shorten/shorten';
// Form elements between ['opendiv'] and ['closediv'] will be refreshed via AHAH on form submission.
$form['opendiv'] = [
'#markup' => '<div id="shorten_replace">',
];
if (empty($storage)) {
$storage = [
'step' => 0,
];
}
if (isset($storage['short_url'])) {
// This whole "step" business keeps the form element from being cached.
$form['shortened_url_' . $storage['step']] = [
'#type' => 'textfield',
'#title' => t('Shortened URL'),
'#default_value' => $storage['short_url'],
'#size' => 25,
'#attributes' => [
'class' => [
'shorten-shortened-url',
],
],
];
}
$form['url_' . $storage['step']] = [
'#type' => 'textfield',
'#title' => t('URL'),
'#default_value' => '',
'#required' => TRUE,
'#size' => 25,
'#maxlength' => 2048,
'#attributes' => [
'class' => [
'shorten-long-url',
],
],
];
// Form elements between ['opendiv'] and ['closediv'] will be refreshed via AHAH on form submission.
$form['closediv'] = [
'#markup' => '</div>',
];
$last_service = NULL;
if (isset($storage['service'])) {
$last_service = $storage['service'];
}
$service = _shorten_service_form($last_service);
if (is_array($service)) {
$form['service'] = $service;
}
$form['shorten'] = [
'#type' => 'submit',
'#value' => t('Shorten'),
'#ajax' => [
'callback' => 'shorten_save_js',
'wrapper' => 'shorten_replace',
'effect' => 'fade',
'method' => 'replace',
],
];
return $form;
}