drupal_render() von formelementen des Typs checkboxes
am 21.07.2009 - 16:18 Uhr in
Hallo,
weiss jemand, wiso mir immer nur die titles-elemente ausgegeben werden wenn ich ein $form element mit #type=checkboxes in einer themefunktion, welche wiederum dieses Element aus einer Hilfsfunktion holt, mit drupal_render() lade? Wenn ich aber dieses Element in Hauptfunktion dieses Formulars einfüge werden alle Boxen geladen. Nicht nur der Title des $form-elementes. Hatte mal eine Version, wo ich diese Checkboxen in dieser View per drupal_get_form geladen habe. Dann gings. Warum so nicht?
Hier sind mal die wichtigsten funktionen:
/**************************************
*
* Private function for flashbanner-upload-form
*
****************************************/
function _flashbannerblock_form() {
$form_state = array('values' => $_POST);
if (user_access('administer flashbanner')) {
$form['settings']['default_banner'] = array('#type' => 'markup', '#theme' => 'flashbannerblock_admin_overview');
.
.
.(more elements)
.
return $form;
}.
/* Register some theme functions for forms, theme functions
* that have not been registered by the module that created
* them...
*/
function flashbannerblock_theme(){
return array(
'flashbannerblock_admin_overview' => array(
'arguments' => array('form' => NULL),
),
);
}
/*******************************************************
*
* List of all Flashbanners as a movie with operations.
*
********************************************************/
function theme_flashbannerblock_admin_overview(&$form) {
//Theme the output
$rows = array();
$result = db_query("SELECT * FROM {files} f INNER JOIN {flashbannerblock} fb ON f.fid = fb.fid");
while ($banner = db_fetch_object($result)) {
$filepath = file_create_path($banner->filepath);
$name = empty($banner->name)?$banner->filename:$banner->name;
$rows[] = array($name , t(l('Delete',"flashbannerblock/".$banner->fid."/delete")));
$rows[] = array( _load_flash_movie($filepath),theme_list_enabled_types($form, $banner->fid));
}
$headers = array(t('Flashbanner'), t('Operations'));
$output = theme('table', $headers, $rows);
$output .= drupal_render($form);
return $output;
}
/*******************************************************
*
* Load checkboxes for every type where is enabled in "General settings".
*
********************************************************/
function theme_list_enabled_types(&$form,$fid){
//Load enabled contenttypes
$typen_enabled=variable_get('typen', array('flashbanner'));
foreach($typen_enabled as $type){
if(!is_numeric($type)){
$types_name = node_get_types('names');
$active_types = array();
foreach($typen_enabled as $key => $value){
if($key == $value && !is_numeric($value)){
$active_types += array($key => $types_name[$key]);
}
}
}
}
$form['defaultbanner_'.$fid] = array(
'#type' => 'checkboxes',
'#title' => t('Default flashbanner for this types:'),
'#default_value' => variable_get('defaultbanner_'.$fid, array('contenttype_default')),
'#options' => $active_types,
'#prefix' => '<div class="flashbanner-default">',
'#suffix' => '</div>',
);
$output = drupal_render($form);
return $output;
}- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 2 Wochen 5 Tagen
vor 2 Wochen 6 Tagen
vor 3 Wochen 1 Stunde
vor 3 Wochen 4 Tagen
vor 3 Wochen 4 Tagen
vor 4 Wochen 1 Tag
vor 4 Wochen 1 Tag
vor 4 Wochen 1 Tag
vor 6 Wochen 5 Tagen
vor 6 Wochen 6 Tagen