Formulaire objet

Signaler
Messages postés
59
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
20 juillet 2010
-
Messages postés
59
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
20 juillet 2010
-
bonjour à tous,
j'ai un soucis, je n'arrive pas à faire une liste déroulante en php objet. J'ai repris un projet qui as déjà été codé à 99% et je l'ai repris derrière, mais j'ai ce soucis.

voilà le code en question
$this->formulaire->add('select', 'operateur')
     ->label(' Opérateur')
     ->value("<option value='orange'>Orange</option>")
     ->value("<option value='bouygues'>Bouygues Telecom</option>")
     ->value("<option value='sfr'>Sfr</option>");


pour ce qui est d'une zone de texte ou autre ca va j'ai réussi à trouver mais celui ci me bloque.

Je vous remercie d'avance pour vos réponses futures.

4 réponses

Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

Bonjour,

Quel(s) est/sont le(s) message(s) d'erreur reçu en retour ?

Cordialement
Messages postés
59
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
20 juillet 2010

Bonjour,
à vrai dire je n'ai pas de message d'erreur, c'est juste que j'obtiens bien une liste déroulante, mais elle est vide. Les trois opérateurs n'apparaissent pas dans celle ci.
Mais je pense que je pourrais poster quelque chose de plus demain(car là je suis chez moi) car j'ai découvert qu'il y avait un fichier qui permettais de générer les listes sous cette forme.
Messages postés
59
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
20 juillet 2010

Voilà le fichier supplémentaire en question :

class Form_Select extends Form_Input {

    protected $choices;

    public function __construct($name, $form) {

        parent::__construct($name, $form);
        $this->choices = array();
    }

    public function choices($array) {

        if (!is_array($array)) {

            $array = func_get_args();
        }
        $this->choices = $array;

        return $this;
    }

    public function __toString($tab = '') {

        $this->_generate_class();

        $id = '';
        $label = '';
        if (!empty($this->label)) {

            list($for, $id) = self::_generate_for_id($this->form->auto_id(), $this->attrs['name']);
            $label = '<label'.$for.'>'.$this->label.$this->form->label_suffix().'</label>'."\n$tab";
        }
        $errors = $this->error_messages->__toString($tab);
        if (!empty($errors)) { $errors = "\n".$errors; }
        $value = $this->form->get_bounded_data($this->attrs['name']);
        $value = (!empty($value)) ? $value : $this->value;

        $j = 0;
        $fields = array();
        foreach($this->choices as $v => $c) {

            if (is_array($c)) {

                $fields[] = "$tab\t".'<optgroup label="'.htmlspecialchars($v).'">';
                foreach($c as $vv => $cc) {

                    $selected = '';
                    if ($value $vv) { $selected ' selected="selected"';  }
                    $fields[] = "$tab\t\t".'<option value="'.htmlspecialchars($vv).'"'.$selected.'> '.$cc.'</option>';
                }
                $fields[] = "$tab\t".'</optgroup>';

            } else {
                $selected = '';
                if ($value $v) { $selected ' selected="selected"';  }
                $fields[] = "$tab\t".'<option value="'.htmlspecialchars($v).'"'.$selected.' /> '.$c.'</option>';
            }
        }

        $field = '<select'.$id.$this->attrs.'>'."\n".implode("\n", $fields)."\n$tab</select>";
        return $tab.sprintf("%2\$s%1\$s%3\$s", $field, $label, $errors);
    }
}
Messages postés
59
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
20 juillet 2010

ca va j'ai enfin trouvé, il fallait le WE pour me reposer.

En fait il fallait faire ->choices("valeur1","valeur2","valeur3",...) ou ->choices($tableau) pour avoir des élements dans la liste déroulante.