Serwus,
mir ist in letzter Zeit eine nervige Sache an dem Captcha Template aufgefallen (-> Contao 2.11.3). Wenn man ein Kommentarmodul einbindet, wird autom. ein vorgegebenes Form generiert mit einer Sicherheitsfrage. Die Sicherheitsfrage steht im Label.
HTML-Code:
<label for="ctrl_captcha">
<span class="captcha_text">Bitte addieren Sie 3 und 6.</span>
<span class="mandatory">*</span>
</label>
<input id="ctrl_captcha" class="captcha mandatory" type="text" maxlength="2" value="" name="cf014de3ad1d28ea12feee655debe849a">
Wenn ich jetzt ein ähnliches Form mit dem Formulargenerator nachbauen will, dann krieg ich die Sicherheitsfrage nicht in das Label. Dadurch kann die CSS Formatierung ünnotig kompliziert werden, wenn ich die Labels z.B. über den Inputs als Block Element haben will.
Es sieht entweder so aus:
HTML-Code:
<span class="captcha_text">Bitte addieren Sie 9 und 7.</span>
<input id="ctrl_10" class="captcha mandatory" type="text" maxlength="2" value="" name="c40d119422f37320cc516c1ffb0883cab">
oder so, wenn ich im Formulargenerator eine "Feldbezeichnung" mitgebe:
HTML-Code:
<label class="mandatory" for="ctrl_10">
<span class="invisible">Pflichtfeld</span>
Sicherheitsfrage
<span class="mandatory">*</span>
<span class="invisible">Was ist die Summe aus 9 und 9?</span>
</label>
<input id="ctrl_10" class="captcha mandatory" type="text" maxlength="2" value="" name="ceae8282116c5d94beb0c776dcaa886f9">
<span class="captcha_text">Was ist die Summe aus 9 und 9?</span>
Ich habe jetzt das form_captcha.html5 Template so erweitert, dass es das gleiche HTML wie beim Kommentarmodul generiert.
PHP-Code:
<?php if (!$this->tableless): ?>
<tr class="<?php echo $this->rowClass; ?>">
<td class="col_0 col_first"><?php echo $this->generateLabel(); ?></td>
<td class="col_1 col_last"><?php echo $this->generateWithError(); ?> <?php echo $this->generateQuestion(); ?></td>
</tr>
<?php else: ?>
<?php if ($this->generateLabel()): ?>
<?php echo $this->generateLabel(); ?>
<?php echo $this->generateQuestion(); ?> <br>
<?php echo $this->generateWithError(); ?> <br>
<?php else: ?>
<label class="mandatory" for="ctrl_<?php echo $this->strId ?>"><?php echo $this->generateQuestion(); ?><span class="mandatory">*</span></label>
<?php echo $this->generateWithError(); ?> <br>
<?php endif; ?>
<?php endif; ?>
Wenn man im Formulargenerator keine "Feldbezeichnung" eingibt, dann ist die Sicherheitsfrage im Label. Im anderen Fall ist es so wie vorher.
Ich hoffe ich konnte dem einem oder anderem helfen.
Grüße
edit: Ein Problem gibt es noch. Bei einem Fehler erhält das Label nicht die Klasse "error". Das ist beim Kommentar Modul aber auch so. Wenn jemand spontan weiß wie es geht, nur her damit.
Lesezeichen