theme_form_element() használata modulban

Keveqiah képe

Jó reggelt.

A theme_form_element() -el lehet ugyebár a generált form elemek kinézetét befolyásolni, átszerkeszteni. A kérdésem az lenne, hogy ezt a funkciót hogyan tudom egy modulba úgy beépíteni, hogy azt a modul használja is.

Ha a sablon template.php fájljában deklarálom, sablonneve_field_element(), akkor szépen működik. Viszont én azt szeretném, hogy a modul által megjelenített formot már a modul átformálja.
Próbálkoztam a modul nevét megadni és úgy használni. MODULNEVE_field_element(), de semmi hatás. Próbáltam egy theme-et regisztrálni neki és úgy használni, de semmi.

  'orfer_form_elements' => array(
    'arguments' => array('element' => NULL, 'value' => NULL),
  ), 
 
function order_form_elements_form_element() { }

Meg lehet ezt oldani valahogy, vagy csak a sablon fájlok turbózása marad ilyen téren?

Drupal verzió: 
Keveqiah képe

Még az jutott most eszembe, hogy esetleg a formra rá lehet húzni egy #theme paramétert.
Bár ennél azt az üzenetet kapom, hogy:
Missing argument 2 for theme_orfer_form_elements()

A kód pedig:

  'orfer_form_elements' => array(
    'arguments' => array('element' => NULL, 'value' => NULL),
  ),
 
function theme_orfer_form_elements($element, $value) {
  // This is also used in the installer, pre-database setup.
  $t = get_t();
  .......
}
0
0
york képe

Lehet a formnak sajat theme fuggvenyt addni, a #theme segitsegevel.

0
0
Keveqiah képe

Még az jutott most eszembe, hogy esetleg a formra rá lehet húzni egy #theme paramétert.
Bár ennél azt az üzenetet kapom, hogy:
Missing argument 2 for theme_orfer_form_elements()

Próbáltam, de így viszont nem kapom meg a $value értéket, ami pedig magát az input mezőket tartalmazná.
Ezzel a html körítés a mezők között szépen megformázom, csak épp a beviteli mező nem marad meg. :D
Vagy a függvényben a mező típusokat is nekem kell felépítenem?

A #theme-ben megadtam a függvényt. Ez jelenleg a theme_form_element kódját tartalmazza, ahol az alábbi rész állítaná elő a mezőt.

 
$output .= "<div class = 'round-" . $element['#type'] . "'> " . $value . "</div>\n";

Részemről a $value érték hibádzik.

Tehát a teljes felépítés:

//...........
  'order_form_elements' => array(
    'arguments' => array('element' => NULL, 'value' => NULL),
  ),
//..........
 
function theme_order_form_elements($element, $value) {
  //var_dump($element);
  // This is also used in the installer, pre-database setup.
  $t = get_t();
 
  $output = '<div class="form-item valami-item-forma"';
  if (!empty($element['#id'])) {
    $output .= ' id="'. $element['#id'] .'-wrapper"';
  }
  $output .= ">\n";
  $required = !empty($element['#required']) ? '<span class="form-required" title="'. $t('This field is required.') .'">*</span>' : '';
 
  if (!empty($element['#title'])) {
    $title = $element['#title'];
    if (!empty($element['#id'])) {
      $output .= ' <label for="'. $element['#id'] .'">'. $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
    else {
      $output .= ' <label>'. $t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
  }
 
  // ADD A CONTAINER DIV WITH A CLASS BASED UPON ELEMENT TYPE
  $output .= "<div class = 'round-" . $element['#type'] . "'> " . $value . "</div>\n";
 
  if (!empty($element['#description'])) {
    $output .= ' <div class="description">'. $element['#description'] ."</div>\n";
  }
 
  $output .= "</div>\n";
 
  return $output;
}
 
/* A form elemen pedig: */
// '#theme' => 'order_form_elements',
0
0