Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je souhaite réaliser un formulaire invitant l'utilisateur à saisir
deux champs datetime afin de définir une période de couverture
à appliquer à une requête sur bdd MySQL.
Ca fonctionne déjà mais :
je dois saisir les datetime au format MySQL natif (yyyy/mm/dd hh:mm:ss)
Pas très parlant pour un public français !
Comment faciliter la vie d'un utilisateur dans cette saisie ?
A minima je souhaiterais pouvoir saisir une date "à la française" soit dd/mm/yyyy,
le summum consistant à faire apparaitre un calendrier pour sélectionner la bonne date
puis l'heure à l'instar par ex. de ce que réalise phpMyAdmin dans le formulaire d'insertion sur un champ datetime.
D'avance merci de vos conseils.
Hors ligne
Salut
Si tu utilises JQuery tu peux utiliser le datePicker, et si tu veux aller plus loin tu peux utiliser le TimePicker ici
http://trentrichardson.com/examples/timepicker/
Hors ligne
perso j'ai créer un nouvel élément pour mes formulaire :
[lang=php]<?php class Grummfy_Form_Element_Date extends Zend_Form_Element_Xhtml { protected $_day; protected $_month; protected $_year; /** * Constructeur d'un élément date avec validateur * @param string $label label du champ * @param string $name nom du champ * @param bool $required requis ou non pour validé le formulaire * @param array $options options de configuration, facultatif */ public function __construct($label, $name, $required = true, $options = null) { parent::__construct($name, $options); $this->addPrefixPath( 'Grummfy_Form_Decorator', 'decorator' ); $this->setLabel($label); $this->setRequired($required); $this->addValidator(new Zend_Validate_Date('DD/MM/YYYY')); $this->setFilters(array( 'HtmlEntities', 'StripTags', 'StringTrim', 'StripNewlines' )); } public function loadDefaultDecorators() { if ($this->loadDefaultDecoratorsIsDisabled()) { return; } $decorators = $this->getDecorators(); if (empty($decorators)) { $this->addDecorator('Date'); $this->addDecorator('Description', array('tag' => 'p', 'class' => 'description')); $this->addDecorator('Errors'); $this->addDecorator('HtmlTag', array('tag' => 'dd', 'id' => $this->getName() . '-element')); $this->addDecorator('Label', array('tag' => 'dt')); } } /** * Défini le jour * @param int $value */ public function setDay($value) { $this->_day = intval($value); return $this; } /** * Fourni le jour * @return int */ public function getDay() { return $this->_day; $this->isValid(); } /** * Défini le mois * @param int $value */ public function setMonth($value) { $this->_month = intval($value); return $this; } /** * Fourni le mois * @return int */ public function getMonth() { return $this->_month; } /** * Défini l'année * @param int $value */ public function setYear($value) { $this->_year = intval($value); return $this; } /** * Fourni l'année */ public function getYear() { return $this->_year; } /** * Fourni le temps (12h30:30) * @return int */ public function getTime() { return mktime(12, 30, 30, $this->getMonth(), $this->getDay(), $this->getYear()); } /** * Défini la valeur de l'élément * @param int|string|array $value */ public function setValue($value) { if (is_int($value)) { $this->setDay(date('d', $value)); $this->setMonth(date('m', $value)); $this->setYear(date('Y', $value)); } elseif (is_string($value)) { $date = strtotime($value); $this->setDay(date('d', $date)); $this->setMonth(date('m', $date)); $this->setYear(date('Y', $date)); } elseif(is_array($value) && isset($value['day']) && isset($value['month']) && isset($value['year'])) { $this->setDay($value['day']); $this->setMonth($value['month']); $this->setYear($value['year']); } else { throw new Grummfy_Form_Element_Exception('Format des valeur incorrecte'); } return $this; } /** * Fourni la date * @param string $format : %day%/%month%/%year% * @return string */ public function getValue($format = '%day%/%month%/%year%') { return str_replace( array('%day%', '%month%', '%year%'), array($this->getDay(), $this->getMonth(), $this->getYear()), $format ); } } # EOF
[lang=php]<?php class Grummfy_Form_Decorator_Date extends Zend_Form_Decorator_Abstract { public function render($content) { $element = $this->getElement(); if (!$element instanceof Grummfy_Form_Element_Date) return $content; $view = $element->getView(); if (!$view instanceof Zend_View_Interface) { return $content; } $value = array( 'day' => $element->getDay(), 'month' => $element->getMonth(), 'year' => $element->getYear() ); $elementContent = $view->formDate($element->getFullyQualifiedName(), $value); switch ($this->getPlacement()) { case self::APPEND: return $content . $separator . $elementContent; case self::PREPEND: return $elementContent . $separator . $content; default: return $elementContent; } } } # EOF
Dernière modification par Grummfy (13-05-2011 01:02:05)
Hors ligne
Pages: 1