Codes PHP en vrac...
Par SandRock le mercredi 6 août 2008, 18:58 - Dev - Lien permanent
App_Form_Element_DateWithJdatepicker
Un Zend_Form_Element utilisant le datepicker de jQuery françisé :
class App_Form_Element_DateWithJdatepicker extends Zend_Form_Element_Xhtml { public function init() { $this->addValidator('Date') ->setAttrib('class', 'datepicker'); } }
$(".datepicker").datepicker({ clearText: 'Effacer', clearStatus: '', closeText: 'Fermer', closeStatus: 'Fermer sans modifier', prevText: '<Préc', prevStatus: 'Voir le mois précédent', nextText: 'Suiv>', nextStatus: 'Voir le mois suivant', currentText: 'Courant', currentStatus: 'Voir le mois courant', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', 'Jul','Aoû','Sep','Oct','Nov','Déc'], monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année', weekHeader: 'Sm', weekStatus: '', dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD d MM', dateFormat: 'dd/mm/yy', firstDay: 0, initStatus: 'Choisir la date', isRTL: false, dateFormat: "yy-mm-dd", firstDay: 1, showStatus: true, showOn: "both", buttonImage: "<?php echo $front->getBaseUrl() ?>/js/lib/jquery-ui-1.5.2/images/calendar.gif", buttonImageOnly: true } );
Un FlashMessenger personnalisé
...Pour inclure un type aux messages (typiquement une class css pour un affichage personnalisé pour les erreurs, les confirmations, les alertes...).
class App_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Action_Helper_FlashMessenger implements IteratorAggregate, Countable { /** * addMessage() - Add a message to flash message * * @param string $message * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface */ public function addMessage($message, $class) { $message = array( 'message' => $message, 'class' => $class); if (self::$_messageAdded === false) { self::$_session->setExpirationHops(1, null, true); } if (!is_array(self::$_session->{$this->_namespace})) { self::$_session->{$this->_namespace} = array(); } self::$_session->{$this->_namespace}[] = $message; return $this; } } // Un Zend_Controller_Action personnalisé class App_Controller_Action extends Zend_Controller_Action { /** * FlashMessenger * * @var Zend_Controller_Action_Helper_FlashMessenger */ protected $_flashMessenger = null; /** * Class constructor * * @param Zend_Controller_Request_Abstract $request * @param Zend_Controller_Response_Abstract $response * @param array $invokeArgs Any additional invocation arguments * @return void */ public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) { $this->setRequest($request) ->setResponse($response) ->_setInvokeArgs($invokeArgs); $this->_helper = new Zend_Controller_Action_HelperBroker($this); //$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger'); $this->_flashMessenger = new App_Controller_Action_Helper_FlashMessenger(); $this->view->flashMessenger = $this->_flashMessenger; $this->init(); } }
Exemple d'utilisation :
$this->_flashMessenger->addMessage('Les calculs ont été mis à jour.', 'notice'); $this->_flashMessenger->addMessage('Impossible d\'effectuer l'opération demandée.', 'error');
<!-- layout.phtml --> <div id="messenger"> <?php if (is_object($this->flashMessenger)) : $messages = $this->flashMessenger->getMessages(); foreach ($messages as $m) { if (is_array($m)) { echo "\t",'<p class="',$m['class'],'">',$m['message'],'</p>',"\n"; } else { echo "\t",$m,"\n"; } } endif; ?> </div>