Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
2 / 3
CRAP
96.30% covered (success)
96.30%
52 / 54
TwbBundleFormCheckbox
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
2 / 3
20
96.30% covered (success)
96.30%
52 / 54
 render(\Zend\Form\ElementInterface $oElement)
100.00% covered (success)
100.00%
1 / 1
13
100.00% covered (success)
100.00%
41 / 41
 getLabelPosition(\Zend\Form\Element\Checkbox $oElement)
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 getLabelHelper()
0.00% covered (danger)
0.00%
0 / 1
5.12
83.33% covered (warning)
83.33%
10 / 12
<?php
namespace TwbBundle\Form\View\Helper;
class TwbBundleFormCheckbox extends \Zend\Form\View\Helper\FormCheckbox {
    /**
     * Form label helper instance
     * @var \Zend\Form\View\Helper\FormLabel
     */
    protected $labelHelper;
    /**
     * @see \Zend\Form\View\Helper\FormCheckbox::render()
     * @param \Zend\Form\ElementInterface $oElement
     * @throws \LogicException
     * @throws \InvalidArgumentException
     * @return string
     */
    public function render(\Zend\Form\ElementInterface $oElement) {
        if ($oElement->getOption('disable-twb')) {
            return parent::render($oElement);
        }
        if (!$oElement instanceof \Zend\Form\Element\Checkbox) {
            throw new \InvalidArgumentException(sprintf(
                    '%s requires that the element is of type Zend\Form\Element\Checkbox', __METHOD__
            ));
        }
        if (($sName = $oElement->getName()) !== 0 && empty($sName)) {
            throw new \LogicException(sprintf(
                    '%s requires that the element has an assigned name; none discovered', __METHOD__
            ));
        }
        $aAttributes = $oElement->getAttributes();
        $aAttributes['name'] = $sName;
        $aAttributes['type'] = $this->getInputType();
        $aAttributes['value'] = $oElement->getCheckedValue();
        $sClosingBracket = $this->getInlineClosingBracket();
        if ($oElement->isChecked()) {
            $aAttributes['checked'] = 'checked';
        }
        //Render label
        $sLabelOpen = $sLabelClose = $sLabelContent = '';
        //Render label and visible element
        if ($sLabelContent = $oElement->getLabel()) {
            if ($oTranslator = $this->getTranslator()) {
                $sLabelContent = $oTranslator->translate($sLabelContent, $this->getTranslatorTextDomain());
            }
            $oLabelHelper = $this->getLabelHelper();
            $sLabelOpen = $oLabelHelper->openTag($oElement->getLabelAttributes() ? : null);
            $sLabelClose = $oLabelHelper->closeTag();
        }
        //Render checkbox
        $sElementContent = sprintf('<input %s%s', $this->createAttributesString($aAttributes), $sClosingBracket);
        //Add label markup
        if ($this->getLabelPosition($oElement) === \Zend\Form\View\Helper\FormRow::LABEL_PREPEND) {
            $sElementContent = $sLabelOpen . ($sLabelContent ? rtrim($sLabelContent) . ' ' : '') . $sElementContent . $sLabelClose;
        } else {
            $sElementContent = $sLabelOpen . $sElementContent . ($sLabelContent ? ' ' . ltrim($sLabelContent) : '') . $sLabelClose;
        }
        //Render hidden input
        if ($oElement->useHiddenElement()) {
            $sElementContent = sprintf(
                            '<input type="hidden" %s%s', $this->createAttributesString(array(
                                'name' => $aAttributes['name'],
                                'value' => $oElement->getUncheckedValue(),
                            )), $sClosingBracket
                    ) . $sElementContent;
        }
        return $sElementContent;
    }
    /**
     * Get the label position
     * @return string
     */
    public function getLabelPosition(\Zend\Form\Element\Checkbox $oElement) {
        return $oElement->getLabelOption('position')? : \Zend\Form\View\Helper\FormRow::LABEL_APPEND;
    }
    /**
     * Retrieve the FormLabel helper
     * @return \Zend\Form\View\Helper\FormLabel
     */
    protected function getLabelHelper() {
        if ($this->labelHelper) {
            return $this->labelHelper;
        }
        if (method_exists($this->view, 'plugin')) {
            $this->labelHelper = $this->view->plugin('form_label');
        }
        if (!($this->labelHelper instanceof \Zend\Form\View\Helper\FormLabel)) {
            $this->labelHelper = new \Zend\Form\View\Helper\FormLabel();
        }
        if ($this->hasTranslator()) {
            $this->labelHelper->setTranslator($this->getTranslator(), $this->getTranslatorTextDomain());
        }
        return $this->labelHelper;
    }
}