Hänge gerade vermutlich an einem Anfängerproblem. Ich will eine serverseitige Validierung eines Feldes aus einem User-Formular machen, das gegen ein anderes Feld desselben Formulars geprüft werden muss. Hier ein Auszug aus dem Formular:
Code
<form addrulepath="/administrator/components/com_easyfpu/models/rules">
<fieldset
name="details"
label="COM_EASYFPU_EASYFPU_DETAILS"
>
<field
name="id"
type="hidden"
/>
<field
name="calories"
type="text"
label="COM_EASYFPU_EASYFPU_CALORIES_LABEL"
description="COM_EASYFPU_EASYFPU_CALORIES_DESC"
size="40"
class="inputbox validate-numfracpos"
validate="numfracpos"
required="true"
hint="COM_EASYFPU_EASYFPU_CALORIES_HINT"
message="COM_EASYFPU_EASYFPU_ERRMSG_NUMBER_FRAC"
/>
<field
name="carbs"
type="text"
label="COM_EASYFPU_EASYFPU_CARBS_LABEL"
description="COM_EASYFPU_EASYFPU_CARBS_DESC"
size="40"
class="inputbox validate-numfracpos"
validate="carbs"
required="true"
hint="COM_EASYFPU_EASYFPU_CARBS_HINT"
message="COM_EASYFPU_EASYFPU_ERRMSG_NUMBER_FRAC"
/>
</fieldset>
</form>
Alles anzeigen
Und hier meine Testklasse:
Code
class JFormRuleCarbs extends JFormRule
{
public function test(SimpleXMLElement $element, $value, $group = null, JRegistry $input = null, JForm $form = null)
{
// Check if value is numeric
if (!is_numeric($value)) {
$element->attributes()->message = JText::_('COM_EASYFPU_EASYFPU_ERRMSG_NUMBER_FRAC');
return false;
}
// Check if calories from carbs do not exceed total calories (1g carbs has 4 kcal)
$caloriesFromCarbs = $value * 4;
$totalCalories = $form->getValue('calories');
if ($caloriesFromCarbs > $totalCalories) {
$element->attributes()->message = JText::_('COM_EASYFPU_EASYFPU_ERRMSG_TOOMUCHCARBS');
return false;
}
return true;
}
}
Alles anzeigen
Mit $totalCalories = $form->getValue('calories'); will ich auf das Feld "calories" zugreifen, was aber so nicht funktioniert. Ich bin mir aber überhaupt nicht sicher, ob die $form-Variable überhaupt der richtige Zugangspunkt ist und wie ich dann an den Wert das "calories"-Feld rankomme, das ja Teil eines fieldsets ist.
Danke für Eure Hilfe!