Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 2
0
 /**
  * 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
 }
Ejemplo n.º 3
0
 /**
  * @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();
 }