public function render($sContent) { //permet de savoir s'il y a une erreur sur le formulaire en globalité $bFormHasErreur = $this->getElement()->getView()->errors; //permet de savoir si le champ traité à une erreur ou pas $bChampHasErreur = $this->getElement()->hasErrors(); /* * Si le formulaire comporte une erreur, il faut alors décorer tous les champs avec : * - soit une coche ok si le champ traité n'a pas d'erreur * - soit une coche croix si le champ a bien une erreur */ if ($bFormHasErreur) { $oChampVoid = new Symbol_Void(); //Span englobante pour la position de la croix $oSpanErrorOk = new Symbol_Span('', CSS_POS_RELATIVE); //on ajoute le contenu du champ $oSpanErrorOk->linkSymbol(new Symbol_Void($sContent)); /* * Deux comportements sont possibles : * -> il y un erreur su ce champ, auquel cas on décore avec un croix rouge et un input rouge * -> il n'y à pas d'erreur sur ce champ mais sur un autre champ, on décore alors avec une check bleue */ if ($bChampHasErreur) { //Classe pour la croix $sClass = CSS_INPUT_CHECK_ERROR; //on ajoute les erreurs (le texte des erreurs) } else { //Classe pour le coche $sClass = CSS_INPUT_CHECK_OK; } //ajout de la croix ou de la coche, c'est selon $oSpanErrorOk->linkSymbol(new Symbol_Span('', trim($sClass))); $oChampVoid->linkSymbol($oSpanErrorOk); //on retourne le champ return $oChampVoid->render(); } else { //si pas d'erreur, on touche à rien return $sContent; } }
/** * @brief Ajout des erreurs sur les champs incriminés * * @author francoisespinet * @version 13 avr. 2012 - 12:04:19 * * @param Symbol_Input $oSymbol le symbol input comme construit * @param int $nId l'id du champ incriminé * @return return_type */ protected function addErrorDeco(Symbol_Input $oSymbol, $nId = null) { //si il y a des erreurs sur cet ensemble de champs if ($this->_aInvalidAdresses) { //on sauvegarde l'ancien input $oInput = $oSymbol; //on réécrit le nouveau avec une décoration classique des erreurs $oSymbol = new Symbol_Span('', CSS_POS_RELATIVE); //s'il y a une erreur sur ce champ en particulier if ($nId !== null && in_array($nId, $this->_aInvalidAdresses)) { $oSpan = new Symbol_Span('', CSS_INPUT_CHECK_ERROR); $oInput->addAttribute('class', CSS_INPUT_ERROR); } else { //sinon on met ok $oSpan = new Symbol_Span('', CSS_INPUT_CHECK_OK); } //on retourne le symbol décoré return $oSymbol->linkSymbols(array($oInput, $oSpan)); } else { //on renvoie le symbole identique s'il n'y avait pas d'erreur return $oSymbol; } }
/** * Décorateur spécifique au formulaire ne comportant que des input devant etre aligné. * Par exemple dans: * @see Form_TypeAppareil * @author francois.espinet * @see Projet_Form_Decorator_Abstract::render_element() */ protected function render_element() { $oForm = new Symbol_Void(); //objet formulaire $this->aoForm = $this->getElement(); //on récupere les éléments //parcours des éléments du formulaire (les champs) foreach ($this->aoForm as $oItem) { /* * Symbole pour gérer l'ensemble du champ * Eventuellement certains éléments peuvent être simplement juxtaposés sans être contenus dans un autre symbole * D'où le symbole void par défault */ $oChamp = new Symbol_Void(); $bChampHasError = $oItem->hasErrors(); //on ecarte submit pour les erreurs if ($oItem instanceof Zend_Form_Element_Text) { if ($bChampHasError) { // on ajoute une classe pour la décoration contour rouge $oItem->setAttrib('class', CSS_INPUT_ERROR . $oItem->getAttrib('class')); } $oChamp = new Symbol_Span('', 'JoinedInput'); //on genere les données $sChamp = $this->buildLabelAndInput($oItem); $oChamp->setData($sChamp); } elseif ($oItem instanceof Zend_Form_Element_Submit) { $oChamp = new Symbol_Void($this->buildSubmit($oItem)); } elseif ($oItem instanceof Zend_Form_Element_Hidden) { $oChamp = new Symbol_Void($this->buildInput($oItem)); } //on attache l'élement au formulaire $oForm->linkSymbol($oChamp); } return $oForm->render(); //on renvoie la chaine }
protected function render_element() { //recuperation de l'élément et de ses attributs $oElement = $this->getElement(); $sName = $oElement->getName(); $this->oView = $oElement->getView(); //on place les deux boutons dans un span $oSpan = new Symbol_Span('', 'RemAjBouton'); $oSpan->setAttribute('id', $sName . '-Boutons'); $oSpan->setAttribute('style', 'display:inline-block;'); //on ajoute les boutons ajouter et supprimer $oSpan->addData($this->createBouton(self::AJ, $sName)); $oSpan->addData($this->createBouton(self::RM, $sName)); //on retourne l'ensemble return $oSpan->render() . '<br/>'; }
/** * @brief Ajout la decoration du champ s'il à une erreur ou si un de ses camarades en à une * * @see Projet_Form_Decorator_Generic * * @author francoisespinet * @version 9 mars 2012 - 11:14:41 * @param unknown_type $sChamp * @param Html_Symbol $oChamp * @param Zend_Form_Element $oItem * @param bool $bChampHasError */ protected function formAddErreurChamp($sChamp, $bChampHasError) { $oChampVoid = new Symbol_Void(); //Span englobante pour la position de la croix $oSpanErrorOk = new Symbol_Span('', CSS_POS_RELATIVE); //on ajoute le contenu du champ $oSpanErrorOk->linkSymbol(new Symbol_Void($sChamp)); $sClass = ''; /* * Deux comportements sont possibles : * -> il y un erreur su ce champ, auquel cas on décore avec un croix rouge et un input rouge * -> il n'y à pas d'erreur sur ce champ mais sur un autre champ, on décore alors avec une check bleue */ if ($bChampHasError) { //Classe pour la croix $sClass = CSS_INPUT_CHECK_ERROR; //on ajoute les erreurs (le texte des erreurs) } else { //Classe pour le coche $sClass = CSS_INPUT_CHECK_OK; } //ajout de la croix ou de la coche, c'est selon $oSpanErrorOk->linkSymbol(new Symbol_Span('', trim($sClass))); $oChampVoid->linkSymbol($oSpanErrorOk); return $oChampVoid->render(); }