turist_ua

File_Decorator

Jan 15th, 2012
219
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. class Application_Form_Decorators_File extends Zend_Form_Decorator_Abstract
  3. {
  4.     public function buildLabel()
  5.     {
  6.         $element = $this->getElement();
  7.         $label = $element->getLabel();
  8.         if ($translator = $element->getTranslator()) {
  9.             $label = $translator->translate($label);
  10.         }
  11.         if ($element->isRequired()) {
  12.             $label .= '*';
  13.         }
  14.         $label .= ':';
  15.         return $element->getView()
  16.                        ->formLabel($element->getName(), $label);
  17.     }
  18.  
  19.     public function buildInput()
  20.     {
  21.         $element = $this->getElement();
  22.         $helper  = $element->helper;
  23.         return $element->getView()->$helper(
  24.             $element->getName(),
  25.             $element->getValue(),
  26.             $element->getAttribs(),
  27.             $element->options
  28.         );
  29.     }
  30.  
  31.     public function buildErrors()
  32.     {
  33.         $element  = $this->getElement();
  34.         $messages = $element->getMessages();
  35.         if (empty($messages)) {
  36.             return '';
  37.         }
  38.         return '<div class="errors">' .
  39.                $element->getView()->formErrors($messages) . '</div>';
  40.     }
  41.  
  42.     public function buildDescription()
  43.     {
  44.         $element = $this->getElement();
  45.         $desc    = $element->getDescription();
  46.         if (empty($desc)) {
  47.             return '';
  48.         }
  49.         return '<div class="description">' . $desc . '</div>';
  50.     }
  51.  
  52.     public function render($content)
  53.     {
  54.         $element = $this->getElement();
  55.         if (!$element instanceof Zend_Form_Element) {
  56.             return $content;
  57.         }
  58.         if (null === $element->getView()) {
  59.             return $content;
  60.         }
  61.  
  62.         $separator = $this->getSeparator();
  63.         $placement = $this->getPlacement();
  64.         $label     = $this->buildLabel();
  65.         $input     = $this->buildInput();
  66.         $errors    = $this->buildErrors();
  67.         $desc      = $this->buildDescription();
  68.  
  69.         $renderedContent = $element->getView()->partial(
  70.             'decorators/file.phtml',
  71.             array('element'=>$element));
  72.  
  73.  
  74.         $output = '<tr><td>'
  75.                 . $label .'</td><td>' . $renderedContent
  76.                 . $input
  77.                 . $errors
  78.                 . $desc
  79.                 . '</td></tr>';
  80.  
  81.         switch ($placement) {
  82.             case (self::PREPEND):
  83.                 return $output . $separator . $content;
  84.             case (self::APPEND):
  85.             default:
  86.                 return $content . $separator . $output;
  87.         }
  88.     }
  89. }
RAW Paste Data