Example #1
0
/**
 * Form field row
 *
 * @package application.helper.smarty
 * @author Integry Systems
 *
 * @package application.helper.smarty
 */
function smarty_block_input($params, $content, Smarty_Internal_Template $smarty, &$repeat)
{
    $formParams = $smarty->_tag_stack[0][1];
    if (!$repeat) {
        $formHandler = $formParams['handle'];
        $isRequired = $formHandler ? $formHandler->isRequired($params['name']) : false;
        $fieldType = $smarty->getTemplateVars('last_fieldType');
        if ($formHandler && $formHandler->getValidator()) {
            $err = $formHandler->getValidator()->getErrorList();
            $msg = empty($err[$params['name']]) ? '' : $err[$params['name']];
        } else {
            $msg = '';
        }
        if ('checkbox' == $fieldType) {
            preg_match('/<input(.*) \\/\\>(.*)\\<label(.*)\\>(.*)\\<\\/label\\>/msU', $content, $matches);
            if ($matches) {
                $content = '<label ' . $matches[3] . '><input ' . $matches[1] . ' /> ' . $matches[4] . '</label>';
            }
        }
        $name = $params['name'];
        $class = !empty($params['class']) ? ' ' . $params['class'] : ' ';
        unset($params['name'], $params['class']);
        $c = $content;
        $content = '<div class="row ' . ($msg ? 'has-error' : '') . ' name_' . $name . ' type_' . $fieldType . ' ' . ($isRequired ? ' required' : '') . $class . '"';
        foreach ($params as $n => $param) {
            $content .= ' ' . $n . '="' . $param . '"';
        }
        $content .= '>' . $c;
        foreach ($smarty->getFieldValidation($name, $formHandler) as $val) {
            $content .= '<div ng-show="isSubmitted && form.' . $name . '.$error.' . substr($val[0], 3) . '" class="text-danger">' . $val[1] . '</div>';
        }
        if ($msg) {
            $content .= '<div class="text-danger">' . $msg . '</div>';
        }
        $content .= '</div>';
        $smarty->assign('last_fieldType', '');
        $smarty->assign('input_name', '');
        return $content;
    } else {
        $smarty->assign('last_fieldType', '');
        $smarty->assign('input_name', $params['name']);
    }
}