hali
6-os drupal alatt problémába futottam.
szeretnék egy saját form element-et készíteni, ami két select elementből áll.
function game_theme() { return array( 'rid' => array( 'argument' => array('form' => NULL) ), ); } function my_elements() { $type['rid']=array( '#input' => TRUE, '#process' => array('rid_process'), ); return $type; } function rid_process($element) { $element['p1']=array( '#type'=>'select', '#options'=> array(-1=>'------------'), '#default_value' => -1, ); $element['p2']=array( '#type'=>'select', '#options'=> array(-1=>'------------'), '#default_value' => -1, ); return $element; } function theme_rid($element) { return theme( 'form_element', array( '#title' => $element['#title'], '#description' => $element['#description'], '#id' => $element['#id'], '#required' => $element['#required'], '#error' => $element['#error'], ), '<div class="container-inline">'. $element['#children'] .'</div>' ); } function my_map_function($form_state) { $form['rendszer']=array('#type'=>'rid','#title'=>t('Mapped Systems'),'#description'=>t('Previously mapped systems could be find here. You should choice one of them to watch.')); $form['rendszer']['p1']=array('#type'=>'select','#options'=>$opts1); $form['rendszer']['p2']=array('#type'=>'select','#options'=>$opts2); $form['rendszer']['op']=array('#type'=>'submit','#value'=>'OK'); return $form; }
namarmost ezt nem jelenik meg. Tudna vki ebben segiteni, hogy miert nem?
Fórum:
Több hiba is van
Drupal 6-ban még nem csináltam form element-et, de 5-ösben egy kicsit másképpen kellett.
Egy form element-nek az az egyik jó tulajdonsága, hogy a "végfelhasználónak" (űrlap készítő programozónak) nem kell foglalkoznia a belső működésével. Sőt! Nem is tudja, hogy az hogyan is működik valójában.
Tehát nem is tud arról, hogy az egy tömb aminek van 'p1' vagy 'p2' indexe.
Egyébként ha logikusan gondolkozol (én már többször is rájöttem arra, hogy utólag minden logikus) akkor rájössz, hogy a rid_process() mindent felülír amit a my_map_function() előzőleg létrehozott (hibásan).
Ha azt szeretnéd. hogy a végfelhasználó változtathasson a listák tartalmán akkor:
Szerintem a theme_rid()