Don't like ads? PRO users don't see any ads ;-)
Guest

ZF2 weirdness

By: a guest on Aug 8th, 2012  |  syntax: PHP  |  size: 6.22 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. *** Source of Zend\Form\View\Helper\FormElement in ZF2
  2. *** See my modifications on line 153 onwards!
  3.  
  4. <?php
  5. /**
  6.  * Zend Framework (http://framework.zend.com/)
  7.  *
  8.  * @link      http://github.com/zendframework/zf2 for the canonical source repository
  9.  * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  10.  * @license   http://framework.zend.com/license/new-bsd New BSD License
  11.  * @package   Zend_Form
  12.  */
  13.  
  14. namespace Zend\Form\View\Helper;
  15.  
  16. use Zend\Form\Element;
  17. use Zend\Form\ElementInterface;
  18. use Zend\View\Helper\AbstractHelper as BaseAbstractHelper;
  19.  
  20. /**
  21.  * @category   Zend
  22.  * @package    Zend_Form
  23.  * @subpackage View
  24.  */
  25. class FormElement extends BaseAbstractHelper
  26. {
  27.     /**
  28.      * Render an element
  29.      *
  30.      * Introspects the element type and attributes to determine which
  31.      * helper to utilize when rendering.
  32.      *
  33.      * @param  ElementInterface $element
  34.      * @return string
  35.      */
  36.     public function render(ElementInterface $element)
  37.     {
  38.         $renderer = $this->getView();
  39.         if (!method_exists($renderer, 'plugin')) {
  40.             // Bail early if renderer is not pluggable
  41.             return '';
  42.         }
  43.  
  44.         if ($element instanceof Element\Captcha) {
  45.             $helper = $renderer->plugin('form_captcha');
  46.             return $helper($element);
  47.         }
  48.  
  49.         if ($element instanceof Element\Csrf) {
  50.             $helper = $renderer->plugin('form_hidden');
  51.             return $helper($element);
  52.         }
  53.  
  54.         if ($element instanceof Element\Collection) {
  55.             $helper = $renderer->plugin('form_collection');
  56.             return $helper($element);
  57.         }
  58.  
  59.         $type    = $element->getAttribute('type');
  60.         $options = $element->getAttribute('options');
  61.  
  62.         if ('checkbox' == $type) {
  63.             $helper = $renderer->plugin('form_checkbox');
  64.             return $helper($element);
  65.         }
  66.  
  67.         if ('color' == $type) {
  68.             $helper = $renderer->plugin('form_color');
  69.             return $helper($element);
  70.         }
  71.  
  72.         if ('date' == $type) {
  73.             $helper = $renderer->plugin('form_date');
  74.             return $helper($element);
  75.         }
  76.  
  77.         if ('datetime' == $type) {
  78.             $helper = $renderer->plugin('form_date_time');
  79.             return $helper($element);
  80.         }
  81.  
  82.         if ('datetime-local' == $type) {
  83.             $helper = $renderer->plugin('form_date_time_local');
  84.             return $helper($element);
  85.         }
  86.  
  87.         if ('email' == $type) {
  88.             $helper = $renderer->plugin('form_email');
  89.             return $helper($element);
  90.         }
  91.  
  92.         if ('file' == $type) {
  93.             $helper = $renderer->plugin('form_file');
  94.             return $helper($element);
  95.         }
  96.  
  97.         if ('hidden' == $type) {
  98.             $helper = $renderer->plugin('form_hidden');
  99.             return $helper($element);
  100.         }
  101.  
  102.         if ('image' == $type) {
  103.             $helper = $renderer->plugin('form_image');
  104.             return $helper($element);
  105.         }
  106.  
  107.         if ('month' == $type) {
  108.             $helper = $renderer->plugin('form_month');
  109.             return $helper($element);
  110.         }
  111.  
  112.         if ('multi_checkbox' == $type && is_array($options)) {
  113.             $helper = $renderer->plugin('form_multi_checkbox');
  114.             return $helper($element);
  115.         }
  116.  
  117.         if ('number' == $type) {
  118.             $helper = $renderer->plugin('form_number');
  119.             return $helper($element);
  120.         }
  121.  
  122.         if ('password' == $type) {
  123.             $helper = $renderer->plugin('form_password');
  124.             return $helper($element);
  125.         }
  126.  
  127.         if ('radio' == $type && is_array($options)) {
  128.             $helper = $renderer->plugin('form_radio');
  129.             return $helper($element);
  130.         }
  131.  
  132.         if ('range' == $type) {
  133.             $helper = $renderer->plugin('form_range');
  134.             return $helper($element);
  135.         }
  136.  
  137.         if ('reset' == $type) {
  138.             $helper = $renderer->plugin('form_reset');
  139.             return $helper($element);
  140.         }
  141.  
  142.         if ('search' == $type) {
  143.             $helper = $renderer->plugin('form_search');
  144.             return $helper($element);
  145.         }
  146.  
  147.         if ('select' == $type && is_array($options)) {
  148.             $helper = $renderer->plugin('form_select');
  149.             return $helper($element);
  150.         }
  151.  
  152.         if ('submit' == $type) {
  153.             // The next four lines fix <button>s being rendered as
  154.             // <input type="button"/>
  155.             if ($element instanceof \Zend\Form\Element\Button) {
  156.                 $helper = $renderer->plugin('form_button');
  157.                 return $helper($element);
  158.             }
  159.            
  160.             $helper = $renderer->plugin('form_submit');
  161.             return $helper($element);
  162.         }
  163.  
  164.         if ('tel' == $type) {
  165.             $helper = $renderer->plugin('form_tel');
  166.             return $helper($element);
  167.         }
  168.  
  169.         if ('text' == $type) {
  170.             $helper = $renderer->plugin('form_text');
  171.             return $helper($element);
  172.         }
  173.  
  174.         if ('textarea' == $type) {
  175.             $helper = $renderer->plugin('form_textarea');
  176.             return $helper($element);
  177.         }
  178.  
  179.         if ('time' == $type) {
  180.             $helper = $renderer->plugin('form_time');
  181.             return $helper($element);
  182.         }
  183.  
  184.         if ('time' == $type) {
  185.             $helper = $renderer->plugin('form_time');
  186.             return $helper($element);
  187.         }
  188.  
  189.         if ('url' == $type) {
  190.             $helper = $renderer->plugin('form_url');
  191.             return $helper($element);
  192.         }
  193.  
  194.         if ('week' == $type) {
  195.             $helper = $renderer->plugin('form_week');
  196.             return $helper($element);
  197.         }
  198.  
  199.         $helper = $renderer->plugin('form_input');
  200.         return $helper($element);
  201.     }
  202.  
  203.     /**
  204.      * Invoke helper as function
  205.      *
  206.      * Proxies to {@link render()}.
  207.      *
  208.      * @param  ElementInterface|null $element
  209.      * @return string|FormElement
  210.      */
  211.     public function __invoke(ElementInterface $element = null)
  212.     {
  213.         if (!$element) {
  214.             return $this;
  215.         }
  216.  
  217.         return $this->render($element);
  218.     }
  219. }