it-swarm.com.de

Widget-Entwicklung - Dropdown-Optionen werden nicht gespeichert

Ich habe es also erfolgreich geschafft, eine Dropdown-Option hinzuzufügen. Das Problem ist, wenn ich auf Speichern klicke, werden alle Optionen entfernt, die ausgewählte Option wird jedoch erfolgreich implementiert.

Hier ist der relevante Code:

function widget($args, $instance) {
        extract( $args );

        $pfxattribution = $instance['pfx-attribution'];
}

<p>
            <label for="<?php echo $this->get_field_id('pfx-attribution'); ?>"><?php _e('Choose attribution:'); ?></label>
            <select id="<?php echo $this->get_field_id('pfx-attribution'); ?>" name="<?php echo $this->get_field_name('pfx-attribution'); ?>" class="widefat" /> 
            <option>Purefx</option>
            <option>Foreign Exchange</option>
            <option>Currency Exchange</option>
            </select>
            </p>

function update($new_instance, $old_instance) {
        // Get the old values
        $instance = $old_instance;

        // Update with any new values (and sanitise input)
        $instance['pfx-attribution'] = strip_tags( $new_instance['pfx-attribution'] );

       return $instance;
}

Jede Hilfe wird sehr geschätzt

6
Danny

Danny, das ist so ziemlich direkt aus einem Plug-In heraus, das ich gemacht habe:

 <?php function form($instance){    
    $instance = wp_parse_args( (array) $instance, $this->w_arg );
  ?>
  <p>
    <select id="<?php echo $this->get_field_id('order'); ?>" name="<?php echo $this->get_field_name('order'); ?>" type="text">
        <option value="asc" <?php selected($instance['order'], 'asc'); ?>>ASC </option>
        <option value="desc" <?php selected($instance['order'], 'desc');?>>DESC </option>
    </select>
</p>

<?php
  }
?>

Ohne den Rest Ihres Codes zu sehen, kann ich nicht sicher sein, ob die Ursache des Problems liegt, aber es könnte sein, dass das Formular nicht in die Formularfunktion eingebunden ist. Wenn das obige nicht für Sie zu funktionieren scheint, pasten Sie vielleicht Ihre Widget-Klasse?

Ich sollte vielleicht hinzufügen, dass meine Widget-Klasse eine Variable w_arg hat, ein Array von Standardwerten! Z.B.

var $w_arg = array(
        'order'=> 'ASC'
        );
4
Stephen Harris

Ihr <option> braucht value= oder sie senden keinen Wert ... im Grunde genommen gerade jetzt value='', das ist, ich wette, was Sie sehen.

0
mor7ifer

Ihr <select> sollte weder ein value-Attribut noch das type="text"-Attribut haben.

0
Geert