Modx Revo Formit Хук не работает

Я использую MODX 2.4.2, и у меня есть многостраничная форма FormIt. В этой форме пользователь имеет возможность выбирать из разных радиобоксов. В зависимости от выбора, сделанного пользователем, выбор оценивается. Эти значения должны быть рассчитаны / суммированы вместе, чтобы получить общее значение, которое будет использоваться для дальнейшего расчета.

Пока у меня есть фрагмент / крюк, "вычисляющий" как это:

<?php

$age = $hook->getValue('age');

if($age === '40') { $result = '111'; } 
if($age === '50') { $result = '222'; } 

if($married === 'yes') { $result = $result + '333'; } 
if($married === 'no') { $result = $result + '444'; } 

$hook->setValue('all', $result);
return true;

Хук вызывается в вызове FormIt-snippet-call (наличие опечатки в нем приводит к ошибке, поэтому хуки реализованы).

[[!FormIt? 
&hooks=`spam,calculating,email,redirect` 
&redirectTo=`36` 
&validate=`age:required, married:required,` 
&emailTpl=`Step1` 
&emailTo=`info@abc.de` 
&emailSubject=`new message` 
&store=`1`
]]

Итак, представьте, что пользователь выбрал возраст "40" и что он женат. Это должно привести к 111 + 333 = 444, но я просто получаю заполнитель [[+all]], отображаемый в электронном письме, которое я получаю через FormIt.

Даже без части калькуляции я просто получаю пустую метку-заполнитель [[+all]]:

<?php

$age = $hook->getValue('age');

if($age === '40') { $result = '111'; } 
if($age === '50') { $result = '222'; } 

$hook->setValue('all', $result);
return true;

Что здесь происходит, любая помощь будет оценена.

РЕДАКТИРОВАТЬ: добавить код формы:

<form action="[[~[[*id]]]]" method="post" class="form">
<input type="hidden" name="nospam:blank" value="[[+fi.nospam]]" />

<span>1. Age</span><br /> 

<input type="radio" name="age[]" value="40" [[!+fi.age:FormItIsChecked=`40`]]" />> 40 years
<input type="radio" name="age[]" value="50" [[!+fi.age:FormItIsChecked=`50`]]" />> 50 years
<input type="radio" name="age[]" value="60" [[!+fi.age:FormItIsChecked=`60`]]" />> 60 years
<input type="radio" name="age[]" value="70" [[!+fi.age:FormItIsChecked=`70`]]" />> 70 years
<input type="radio" name="age[]" value="80" [[!+fi.age:FormItIsChecked=`80`]]" />> 80 years

<br /><br />

<span>2. Married</span><br /> 

<input type="radio" name="married[]" value="yes" [[!+fi.married:FormItIsChecked=`yes`]]" />yes
<input type="radio" name="married[]" value="no" [[!+fi.married:FormItIsChecked=`50no]]" />no

<br /> <br /> 

<input class="button" type="submit" value="Weiter" />
</form>

1 ответ

$result не определен, если тесты не пройдены, поэтому в этом случае заполнитель не будет заменен. Инициируйте его с пустым значением, чтобы избежать этого.

Пожалуйста, проверьте, что находится в $ age, это массив, потому что вы использовали name="age[]"

Кстати, $ замужество никогда не имеет значения в вашем коде.

Другие вопросы по тегам