我正在使用 MODX 2.4.2,并且我有一个多页 FormIt-form。在这种形式中,用户可以从不同的单选框中进行选择。根据用户所做的选择,选择会受到重视。这些值需要一起计算/求和,以获得一个总值,该总值将用于进一步计算。
到目前为止,我有一个片段/钩子“计算”,如下所示:
<?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,但我只是在通过 FormIt 发送的电子邮件中显示占位符[[+all]] 。
即使没有计算部分,我也只是得到空白占位符[[+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>