2010-01-21 6 views
2

Une autre question sur Drupal webforms - La forme elle-même est construit par /includes/form.inc « sDrupal - élément Webform thématisation

function theme_form_element($element, $value)

et ajoute un élément à <label> la sortie $. Je veux enlever cette étiquette seulement pour un webform, ainsi je dois surcharger la fonction. Comment puis-je le remplacer pour un seul formulaire Web, tout en le laissant identique dans tous les autres? E.g.

if ($block == 'contact'): 
    // only output <input> form element stored in $value 
    function mytheme_html_form_element($element, $value) { 
    $t = get_t(); 
    $output .= " $value\n"; 
    return $output; 
    } 
endif; 

Est-ce possible, et ce qui se passe dans la condition if?

Répondre

1

je ne dois faire un hook_form_alter, mais l'étiquette elle-même était dans l'élément [ 'soumis']. est ici le code

if($form_id == 'webform_client_form_18') { 
    $form['submitted']['#children'] = ' 
    <input 
    type="text" 
    maxlength="128" 
    name="submitted[email]" 
    id="edit-submitted-email" 
    value="' . $form['submitted']['email']['#default_value']. '" 
    class="form-text required" 
    /> 
    '; 
    } 

sous une forme différente, en supprimant le #title a travaillé (+1 pour vous!), Mais cela est une autre affaire.

6

Si vous souhaitez simplement supprimer l'étiquette, vous pouvez également utiliser hook_form_alter() et vérifier que $ form_id est égal à la forme Web en question. L'identifiant sera de la forme: webform_client_form_N où N est l'identifiant de noeud du formulaire Web.

Une fois que vous travaillez sur la bonne forme, vous pouvez décharger l'étiquette en utilisant, par exemple, le code comme ceci:

unset($form['submitted']['first_name']['#title']); 

Ce qui désinitialiser l'étiquette d'un champ appelé prenom.

0

Je ne supprimerais pas les titres d'éléments de formulaire. Vous pouvez obtenir des résultats inattendus lorsque votre formulaire est rendu par le moteur de thème.

Vous pouvez le faire de plusieurs façons:

Thème chaque élément ou la forme entière avec des '#theme' => 'my_callback'.

Vous pouvez également créer votre propre élément de formulaire en utilisant hook_elements qui utilise un hook de thème correspondant.

Voir:

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html

http://api.drupal.org/api/function/hook_elements/6

Questions connexes