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 はまとめて削除され、2 番目はそのコンテンツ (つまり、入力またはテキストエリア) のみが保持されます。

あなたの人生を楽にするために、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}

入力 type=file のスタイリングに関しては、忘れてください。ブラウザごとに異なる方法でレンダリングされますが、回避策はありますが、それは別の話です。

于 2013-04-24T13:56:39.417 に答える