This form consists of 1 textfield, and 1 ajax button.
I'm trying to make it add another text field with each click.
It works for the first one, to get a total of 2 text fields. I cannot get more than 2 to appear though.
I suspect the callback is just adding a field to the original $form, without taking account any updates since the form originally loaded.
I'm not sure how to approach this in Drupal 8. Any insight would be appreciated.
Here is my form control
<?php
...
class MyModuleForm extends FormBase {
...
public function buildForm(array $form, array &$form_state) {
$form['foo'] = array(
'#type' => 'container',
'#tree' => TRUE,
'#prefix' => '<div id="foo-replace">',
'#suffix' => '</div>'
);
$form['foo'][0] = array(
'#type' => 'textfield'
);
$form['add'] = array(
'#type' => 'submit',
'#name' => 'add',
'#value' => t('Add'),
'#ajax' => array(
'callback' => array($this, 'addMore'),
'wrapper' => 'foo-replace',
'effect' => 'fade',
),
);
return $form;
}
public function addMore(array $form, array &$form_state) {
$form['foo'][] = array(
'#type' => 'textfield'
);
return $form['foo'];
}
}