Solución:
Para resolver el problema, establezca ‘#validated’ => ‘TRUE’ en la definición de su elemento de formulario.
Example:
form['my_dynamic_select'] = array(
…
'#type' => 'select',
'#validated' => TRUE
…
)
Razón:
Si estamos usando un SELECT (menú desplegable) poblado dinámicamente a través de AJAX, aparecerá este error. Cuando un valor no está presente en la matriz de opciones, Drupal lo considerará ilegal. Entonces, el usuario no pudo inyectar un valor ilegal en la base de datos.
Pero en nuestro caso está totalmente bien, así que necesitamos usar el atributo 'validated' => TRUE
para omitir la validación.
Fuente: Se ha detectado una elección ilegal. Por favor contacte al administrador del sitio.
Debe hacerlo en el lado del servidor, utilizando un hook_form_alter()
función y la #limit_validation_errors
propiedad de la API de formulario. Deberá modificarlo para que se adapte a sus propias necesidades, pero lo siguiente debería ayudar:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'my_form') {
$form['submit']['#limit_validation_errors'] = array();
}
}
Tenga cuidado de que lo anterior ignore todos errores de validación en el formulario. Deberá poner los nombres de los elementos del formulario que hacer quiere ser validado en el #limit_validation_errors
formación.