Come disattivare un campo o fare in sola lettura in Drupal 7

Sto cercando di disattivare paio di campi e li rendono readonly via hook_page_alter(). Sono stato in grado di fare il controllo se l’utente visualizza la pagina di modifica sezione (il modulo di modifica)

$page['content']['system_main']['#node_edit_form'] == TRUE)

poi quando ho provato a disattivare paio di campi, ho trovato che l’elenco di selezione può essere disabilitata tramite questo codice:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#attributes']['disabled'] = TRUE;

ma se io uso il seguente codice non funziona:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

Ho anche scoperto che non posso usare lo stesso codice per disattivare un campo area di testo:

$page['content']['system_main']['field_my_text_area']['und']['#attributes']['disabled'] = TRUE;

Il codice di cui sopra non disabilita l’area di testo, ma lo stesso codice può disattivare l’elenco di selezione!

Poi ho provato hook_form_alter() per fare la stessa cosa, e sono stato in grado di disattivare i campi e quando ho controllato il rendering array $pagina array, ho visto che si vede:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

ma quando ho impostato lo stesso codice in hook_page_alter(), ma non ha funzionato. Un altro aspetto avrà la precedenza, ho pensato che hook_page_alter() è l’ultimo posto per modificare il markup.

Idea di cosa è il modo migliore per disabilitare/readonly qualsiasi tipo di campo, all’interno di hook_page_alter() in drupal 7?

Grazie

OriginaleL’autore Mehr | 2011-03-23

2 Replies
  1. 16

    Funziona per i campi di testo^

    $form['field_secured_title']['und']['0']['value']['#attributes']['disabled'] = TRUE;
    
    Grazie per la risposta. Non ho problema con $form, quello che mi chiedo è come farlo da $pagina array, il modo in Drupal 7 come. Voglio dire, utilizzando il nuovo hook_page_alter() funzione.
    se si desidera modificare i campi di un form, il modo in Drupal come farlo con hook_form_alter
    API doc è sbagliato e fuorviante api.drupal.org/api/drupal/…
    Sivaji – collegamento D6 API doc, non D7.
    C’è un #disabili parametro in Forma API api.drupal.org/api/drupal/…

    OriginaleL’autore oleg

  2. 2

    Come detto nella doc

    È possibile utilizzare gli attributi :

    $form['#attributes'] = array('disabled' => TRUE);
    

    OriginaleL’autore Reign.85

Lascia un commento