TbHtml::inputAddOn PHP Method

inputAddOn() protected static method

Generates an add-on for an input field.
protected static inputAddOn ( string | array $addOns, array $htmlOptions, string $position = 'prepend' ) : string
$addOns string | array the add-on.
$htmlOptions array additional HTML attributes.
$position string either 'prepend' or 'append'. Position is only important if you are passing multiple addons and it's a mixture of text/radio/checkboxes or buttons. The current styling needs buttons at the ends.
return string the generated add-on.
    protected static function inputAddOn($addOns, $htmlOptions, $position = 'prepend')
    {
        // todo: refactor this method
        $normal = array();
        $buttons = array();
        $addOnOptions = TbArray::popValue('addOnOptions', $htmlOptions, array());
        $normalAddOnOptions = $addOnOptions;
        $buttonAddOnOptions = $addOnOptions;
        self::addCssClass('input-group-addon', $normalAddOnOptions);
        self::addCssClass('input-group-btn', $buttonAddOnOptions);
        if (!is_array($addOns)) {
            $addOns = array($addOns);
        }
        foreach ($addOns as $addOn) {
            if (strpos($addOn, 'btn') === false) {
                $normal[] = $addOn;
            } else {
                // TbHtml::butonDropdown() requires special parsing
                if (preg_match('/^<div.*class="(.*)".*>(.*)<\\/div>$/U', $addOn, $matches) > 0 && isset($matches[1]) && strpos($matches[1], 'btn-group') !== false) {
                    $buttons[] = $matches[2];
                } else {
                    $buttons[] = $addOn;
                }
            }
        }
        $output = '';
        if ($position == 'prepend') {
            if (!empty($buttons)) {
                $output .= self::tag('span', $buttonAddOnOptions, implode(' ', $buttons));
            }
            if (!empty($normal)) {
                $output .= self::tag('span', $normalAddOnOptions, implode(' ', $normal));
            }
        } else {
            // append
            if (!empty($normal)) {
                $output .= self::tag('span', $normalAddOnOptions, implode(' ', $normal));
            }
            if (!empty($buttons)) {
                $output .= self::tag('span', $buttonAddOnOptions, implode(' ', $buttons));
            }
        }
        return $output;
    }
TbHtml