I have a form alter handler like this.
function toyotaec_form_webform_client_form_seleccionar_alter(&$form, &$form_state) {
$concesionarias = concesionarias();
$form['actions']['submit']['#value'] = 'Enviar';
$form['submitted']['concesionaria']['#options'] = $concesionarias;
$form['#validate'][] = 'toyotaec_form_webform_client_form_seleccionar_validate';
$form['#submit'][] = 'toyotaec_form_webform_client_form_seleccionar_submit';
}
Actually, this code is not a hook_form_alter but a function called by the actual hook. The hook calls this function passing &$form and &$form_state also by reference.
After this, I have the corresponding handlers. Both handlers are called as expected. The handler I want to focus in is as follows:
function toyotaec_form_webform_client_form_seleccionar_submit(&$form, &$form_state) {
$values = $form_state['values']['submitted_tree'];
$input = &$form['submitted'];
$concesionaria = trim($values['concesionaria']);
$redirigir = trim($values['redirigir']);
$modelo = trim($values['modelo']);
//obtenemos cual es la concesionaria (por marca, descartamos las ciudades)
$mconcesionaria = current(explode('-', $concesionaria));
//las redirecciones diferidas van a tener una salvada incluyendo la url.
//las redirecciones directas no van a tener salvada.
$form_state['values']['submitted']['3'] = _redirect_bystore($mconcesionaria, $redirigir, $form_state, $concesionaria, $modelo);
}
For the last line, I also tried assigning $form_state['values']['submitted_tree']['url']. This url field is the 3rd field and I have to keep track of it, but even when the data is stored in the array (confirmed by using dpm()
on it), the form result has a blank url field.
For this, I'm using Webforms in Drupal 7.
My question is: how can I alter the submitted data? It seems that - for the submit handler - form state is not passed by reference.