Я использую 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=`[email protected]`
&emailSubject=`new message`
&store=`1`
]]
Итак, представьте, что пользователь выбрал возраст «40» и что он женат. Это должно привести к 111 + 333 = 444, но я просто получаю заполнитель [[+ Все]] отображается в электронном письме, я получаю отправлено через FormIt.
Даже без части калькуляции я просто получаю пустой заполнитель [[+ Все]]:
<?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>
$ результат не определен, если тесты не пройдены, поэтому в этом случае заполнитель не будет заменен. Инициируйте его с пустым значением, чтобы избежать этого.
Пожалуйста, проверьте, что в $ возраст, это массив, потому что вы использовали имя = «возраст []»
Кстати, $ замужество никогда не имеет значения в вашем коде.
Других решений пока нет …