Errore form amministrazione modulo

2 contenuti / 0 new
Ultimo contenuto
Errore form amministrazione modulo

warning: Invalid argument supplied for foreach() in /home/user/www/drupal/includes/form.inc on line 1205.

Inquadriamo la situazione: sto sbattendo la testa per capire da dove viene questo errore, l'errore mi compare in una determinata pagina di ammministrazione di un modulo sviluppato da me che ovviamente è generata da un determinato "Page Callback" che fà uso dei form dei drupal.

L'errore è quello scritto in alto al post ed è dovuto al codice sottostante

<?php
$options
= node_get_types('names'); //controllo quali content type sono attivi
 
$form['nomeform'] = array(
   
'#type' => 'checkboxes',
   
'#title' => 'Bulk\'s mode unsetting',
   
'#options' => $options, // le etichette di ogni checkbox sono le content type che abbiamo controllato prima
   
'#default_value' => variable_get('nomeform', ''),
   
'#description' => 'Select the "node type" to disable all variables.',
  );
?>

facendo qualche ricerca ho capito che l'errore compare nella situazione in cui un "foreach" non riceve un array com'è richiesto e nello specifico se commento la riga.

<?php
'#default_value' => variable_get('nomeform', '')
?>

l'errore scompare, quindi mi sembra di capire che l'errore è dovuto al fatto che le variabili che cerca di leggere in realtà non esistono. A conferma di questa ipotesi c'è il fatto che se SALVO la pagina in questione l'errore scompare "magicamente".
...

L'errore non è di vitale importanza ma può essere utile capire perchè succede... avete qualche idea??

In pratica lui nei default_values si aspetta un array che contenga le chiavi degli options che sono stati flaggati, quindi potresti avere una cosa tipo:

<?php
$options
= node_get_types('names'); //controllo quali content type sono attivi
 
$form['nomeform'] = array(
   
'#type' => 'checkboxes',
   
'#title' => 'Bulk\'s mode unsetting',
   
'#options' => $array(
     
0 => t('Primo'),
     
1 => t('Secondo'),
     
2 => t('Terzo'),
    ),
   
'#default_value' => variable_get('nomeform', array(0,2)),
   
'#description' => 'Select the "node type" to disable all variables.',
  );
?>

Ciao
Marco
--
My blog
Working at @agavee