donderdag 3 oktober 2013

Drupal7:Form-id weergeven en overriden

Tijdens het coden in Drupal is het soms handig om de form-id te kennen, dit om bepaalde formulieren te overriden.
Uiteraard bestaat er een zeer goed module hiervoor, nl: Devel.

Maar het kan nog sneller...

1. Form-id weergeven



Zoals je in de afbeelding ziet, weet je onmiddelijk de form-id. In bovestaande afbeelding is de form-id: user_login .

Om deze melding te krijgen voeg je volgende code toe aan je /sites/all/themes/mijn_theme/template.php:


function MIJN_THEME_form_alter(&$form, &$form_state, $form_id) {
  // Show form_id
  drupal_set_message("Form ID is : " . $form_id);
}


Vergeet niet de naam MIJN_THEME te vervangen door de naam van je eigen theme, en na het opslaan van template.php de caches te legen!

Wanneer je nu op een pagina met formulier terecht komt staat nu de id van je formulier erbij.

Waarvoor kunnen we dit gebruiken? Als je formulier wil aanpassen naar je eigen wensen. Voorbeeld om een extra class-CSS toe te voegen aan je formulier.

In dit code-voorbeeld ontbreekt de class-tag:

<form method="post" action="login">


Mét class-tag:

<form class="test" method="post" action="login">


Ok, hieronder het verlossend antwoord...


2. Formulier overriden

Om bovenstaand code-voorbeeld op te lossen voegen we eenvoudigweg volgend stukje code toe aan je template.php.


function MIJN_THEME_form_alter(&$form, &$form_state, $form_id) {
  // Show form_id
    drupal_set_message("Form ID is : " . $form_id);
 // Node edit form
    if ($form_id == "user_login") {      $form['#attributes'] = array('class' => 'test');  
  }  
}


Klein woordje uitleg: De form-id wisten we al user_login.

Als (if) form-id = "user_login"{
 voeg dan volgend attribuut toe class="test"

Voila! That's it!

Op deze manier kun je alle formulieren aanpassen, door het toevoegen/aanpassen van elementen, attributen, enz...

Voor alle mogelijke aanpassingen van formulier-elementen kun je terecht op de Drupal API pagina.

Succes!






Geen opmerkingen:

Een reactie plaatsen