IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Sélecteur de fuseau horaire


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut Sélecteur de fuseau horaire
    J'ai fait un p'tit sélecteur de timezone rapido.
    Si ça intéresse...
    et si y a moyen de l'améliorer ou le pire : ça existe déjà et je ne l'ai pas vu!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
    class My_Form_Element_Timezone extends Zend_Form_Element_Multi 
    {
    	public $timezone_identifiers = array();
     
    	public $areas = array('Africa', 'America', 'Antartica', 'Arctic', 'Asia', 
    	                      'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific');
     
    	public $helper = 'formSelect';
     
    	public function __construct($spec, $options = null)
    	{
    		$this->timezone_identifiers = DateTimeZone::listIdentifiers();
    		foreach($this->timezone_identifiers as $zone) {
    	    	$zone = explode('/',$zone);
    	    	if (in_array($zone[0], $this->areas)) {
    	    		$listZone[$zone[0]]["{$zone[0]}/{$zone[1]}"] = $zone[1];
    	    		asort($listZone[$zone[0]]);
    	    	}
    	    }
    		$this->setMultiOptions($listZone);
    		parent::__construct($spec, $options);
    	}
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Merci de faire tourner

    Tu pourrais l'améliorer en ajoutant des accesseurs ou définisseur, méthodes genre "setAreas()" tu vois ?

  3. #3
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    J'ai modifié la classe en ajoutant deux accesseurs permettant de redéfinir tout ou d'ajouter à celles existantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
    class Ez_Form_Element_Timezone extends Zend_Form_Element_Multi 
    {
    	private $timezone_identifiers = array();
     
    	private $areas = array('Africa', 'America', 'Antartica', 'Arctic', 'Asia', 
    	                      'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific');
     
    	public $helper = 'formSelect';
     
    	public function __construct($spec, $options = null)
    	{
    		$this->timezone_identifiers = DateTimeZone::listIdentifiers();
    		foreach($this->timezone_identifiers as $zone) {
    	    	$zone = explode('/',$zone);
    	    	if (in_array($zone[0], $this->areas)) {
    	    		$listZone[$zone[0]]["{$zone[0]}/{$zone[1]}"] = $zone[1];
    	    		asort($listZone[$zone[0]], SORT_STRING);
    	    	}
    	    }
    		$this->setMultiOptions($listZone);
    		parent::__construct($spec, $options);
    	}
     
    	public function setAreas(array $areas) 
    	{
    		$this->areas = $areas;
    	}
     
    	public function addAreas($areas)
    	{
    		if (is_string($areas)) {
    			$this->areas[] = $areas;
    		}elseif (is_array($areas)) {
    	    	$this->areas = array_merge($this->areas, $areas);	
    	    } else {
     
    	    	throw new Ez_Exception("Argument 1 passed to ".__METHOD__." must be a string or an array, ".gettype($areas)." given");
    	    }
    	    sort($this->areas, SORT_STRING);
    	}
    }
    J'ai aussi rendu privé les propriétés car chez moi ça faisait un bug bizarre, ça m'affichait dans la balise select le contenu des propriétés $timezone_identifiers et $areas, j'ai pas trop compris...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Cool, maintenant, removeAreas :p

  5. #5
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    je vous laisse le plaisir de l'ajouter par vous-même, ça ne devrait pas être compliqué!

Discussions similaires

  1. Fuseau horaire apache
    Par Link3 dans le forum Apache
    Réponses: 2
    Dernier message: 09/07/2006, 13h55
  2. fuseau horaire en vb6
    Par john stedd dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/06/2006, 17h02
  3. Date - fuseau horaire
    Par sparton dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 11/01/2006, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo