我使用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`
]]
因此想象用户确实选择了年龄&#34; 40&#34;并且他已经结婚了。这应该会导致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>
答案 0 :(得分:0)
$ result是未定义的,因此在这种情况下,占位符不会被替换。使用空值初始化它以避免这种情况。
请检查 $ age 中的内容,这是一个数组,因为您使用了 name =&#34; age []&#34;
顺便说一句:$结婚从来没有代码中的价值。