0
 // uses $this->_labelAlign, $this->_col2space, $this->_errorTxtColor, $this->_field, $this->_maxFields
// if $this->_field[$x]['rows'] > 0 assumes text area
public function formatRow () 
{
    $output = '';
    for ($x = 1; $x <= $this->_maxFields; $x++) 
    {           
        if ($this->_field[$x]['active'] == 'Y' || $this->_field[$x]['active'] == 'R') {
            $name = 'mod_simpleemailform_field' . $x . '_' . $this->_instance;
            $value = (isset($_POST[$name])) ? htmlspecialchars($_POST[$name]) : '';
            // prevents Joomla from reformatting using javascript
            if (strpos($value, '@')) {
                $value = str_replace('@', '&#64;', $value);
            }
            // 2011-12-03 DB: added CSS classes for input, table, row, th and td
            $row = '';
            $row .= '<tr' . $this->_trClass   . '>';
            // labels
            $row .= "<th" . $this->_thClass    . " align='" . $this->_labelAlign . "'>" . $this->_field[$x]['label'] . "</th>";
            // space between cols
            $row .= "<td" . $this->_spaceClass . " width='" . $this->_col2space  . "'>&nbsp;</td>";
            // input field
            $row .= "<td" . $this->_tdClass    . ">";
            // check to see if text area
            if ($this->_field[$x]['rows'] > 0) {
                $row .= sprintf('<textarea name="%s" id="%s" rows="%d" cols="%d" %s>%s</textarea>',
                                $name,
                                $name,
                                $this->_field[$x]['rows'],
                                $this->_field[$x]['cols'],
                                $this->_inputClass,
                                $value);
            } else {
                $row .= sprintf('<input type="text" name="%s" id="%s" size="%d" value="%s" maxlength="%d" %s/>',
                                $name,
                                $name,
                                $this->_field[$x]['size'],
                                $value,
                                $this->_field[$x]['maxx'],
                                $this->_inputClass);
            }
            $row .= ($this->_field[$x]['error']) 
                  ? $this->formatErrorMessage($this->_errorTxtColor, $this->_field[$x]['error']) 
                  : '';
            $row .= "</td>";
            $row .= "</tr>\n";
            $output .= $row;
        }
    }
    return $output;
}

这是我的输出模块代码,它以表格格式显示,我不希望这种类型的布局作为输出...我还尝试使用 tr、td 和 th 标签进行更改,但未能正确输出。 ..所以请如果有人帮我解决这个问题。

错误的格式输出我得到的

在此处输入图像描述

正确的格式输出我想要的

在此处输入图像描述

4

1 回答 1

1

好的,这就去。你有一系列

标签间隔...输入字段

所以用一个替换表

<div class='form-x'

并在css中根据需要设置其宽度,即

div.form-x {width:450px; padding:12px;}

然后您要替换单元格:第一个 th 将成为标签,第一个 td 将被完全删除,第二个将仅保留其内容(即输入或文本区域)。

为了让您的生活更轻松,请将每对标签输入分组在一个 div 中,以便:

<div class='formelement'>
  <label for='element-1'><?php echo $this->_labelAlign ?></label>
  <input ... or <textarea...
</div>

在CSS中

div.formelement {padding:20px 0 0 0}
div.formelement label {display:block;}
div.formelement input, div.formelement textarea {width:100%}

最后提交按钮应该放在一个div中

div.submitbutton {text-align:center}

关于输入类型=文件的样式,忘记它。每个浏览器的呈现方式都不同,虽然有一些解决方法,但那是另一回事。

于 2013-04-24T13:56:39.417 回答