it-swarm.com.de

Wie speichere ich ein hochgeladenes Bild in einem Administrationsformular?

Ich habe das folgende Modul geschrieben, um ein Hintergrundbild hochzuladen. Mein Problem ist, dass meine Submit-Funktion nicht aufgerufen wird, obwohl das Bild hochgeladen und im Block angezeigt wird, bis die nächste Bereinigung kommt. Die Tabelle der verwalteten Dateien zeigt den Status 0 ... was sollte 1 sein, soweit ich weiß.

Hier ist der Code meines Moduls: Was ist der Fehler?

function backgroundimage_block_info() {
    // This example comes from node.module.
    $blocks['backgroundimage'] = array(
        'info' => t('Background Image'),
    );


    return $blocks;
}
function backgroundimage_block_view($delta = '') {
    $fid_now=variable_get('backgroundimage');
    dpm($fid_now);
    $file_obj = file_load($fid_now);

    $bg_img_url = file_create_url($file_obj->uri);

    // This example is adapted from node.module.
    $block = array();

    switch ($delta) {
        case 'backgroundimage':
            $block['subject'] ="imagebackgroundblock";
            $block['content'] ="<div class='background-image'><img src='".$bg_img_url."'></div>";

            break;


    }
    return $block;
}
function backgroundimage_admin() {
    $form = array();

    $form['backgroundimage'] = array(
        '#type' => 'managed_file',
        '#name' => 'backgroundimage_image',
        '#title' => t('upload image, huh!'),
        '#default_value' => variable_get('backgroundimage', ''),
        '#description' => t("Here you can upload an image to the background!"),
        '#required' => TRUE,
        '#upload_location' => 'public://backgroundimage/'
    );

    return system_settings_form($form);
}
function backgroundimage_form_submit($form, $form_state) {
    dpm("yeah"); // is not being called!
    $form['backgroundimage']['#file']->status = FILE_STATUS_PERMANENT;
    file_save($form['backgroundimage']['#file']);
}

function backgroundimage_menu() {

    $items = array();

    $items['admin/settings/backgroundimage'] = array(
        'title' => 'Settings Background Image',
        'description' => 'Image upload',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('backgroundimage_admin'),
        'access arguments' => array('administer backgroundimage settings'),
        'type' => MENU_NORMAL_ITEM,
    );

    return $items;
}

?> 

Vielen Dank!

6
Jurudocs

Sie haben system_settings_form_submit() verwendet, damit Sie einen benutzerdefinierten Übermittlungshandler für Ihr Formular hinzufügen können, indem Sie diesen Code zu Ihrem hook_menu

function backgroundimage_admin() {
    $form = array();

    $form['backgroundimage'] = array(
        '#type' => 'managed_file',
        '#name' => 'backgroundimage_image',
        '#title' => t('upload image, huh!'),
        '#default_value' => variable_get('backgroundimage', ''),
        '#description' => t("Here you can upload an image to the background!"),
        '#required' => TRUE,
        '#upload_location' => 'public://backgroundimage/'
    );
    $form['#submit'][] = 'backgroundimage_form_submit';
    return system_settings_form($form);

}
8