Ich habe versucht, das Feldattribut showon form in einem Front-End-Formular ohne Arbeitsergebnisse zu verwenden.
Nicht einmal das hier angegebene Beispiel funktioniert: https://docs.joomla.org/Form_field#Showon
Fehlt etwas, muss ich ein bestimmtes Skript manuell einfügen, wenn ich es im Frontend verwenden möchte?
Ich verwende Joomla 3.4.1, Frontend ist eine T3-Vorlage, falls es darauf ankommt.
Irgendwelche Ideen oder Lösungen?
EDIT: Das Formular
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="main">
<field name="foo" type="list" >
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="bar" type="text" showon="foo:1" />
<field name="foo2" type="text" />
<field name="bar2" type="text" showon="foo2:1" />
</fieldset>
</form>
Die Vorlage
<?php
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
?>
<form action="...>"
method="post"
onsubmit="return false;"
name="adminForm" id="adminForm" class="form-validate">
<div class="form-horizontal adminform">
<fieldset class="">
<legend><?php echo 'test'; ?></legend>
<div class="span6">
<?php foreach ($this->form->getFieldset() as $field): ?>
<div class="control-group">
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
<?php echo JHtml::_('form.token'); ?>
</form>
BEARBEITEN 2: Eine Lösung in Joomla-Kerndateien gefunden
Wenn der obige Vorlagencode aktualisiert wurde von:
<div class="span6">
<?php foreach ($this->form->getFieldset() as $field): ?>
<div class="control-group">
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
Zu:
<div class="span6">
<?php foreach ($this->form->getFieldset() as $field): ?>
<?php
$class = '';
$rel = '';
if ($showon = $field->getAttribute('showon')) {
JHtml::_('jquery.framework');
JHtml::_('script', 'jui/cms.js', false, true);
$id = $this->form->getFormControl();
$showon = explode(':', $showon, 2);
$class = ' showon_' . implode(' showon_', explode(',', $showon[1]));
$rel = ' rel="showon_' . $id . '[' . $showon[0] . ']"';
}
?>
<div class="control-group<?php echo $class; ?>"<?php echo $rel; ?>>
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
Es klappt
Soll ich diesen Teil die ganze Zeit manuell hinzufügen?
Docu sagt nichts darüber aus, ich muss die Datei cms.js manuell laden und den Control-Grouptag selbst erstellen? Erscheint merkwürdig