modx revo formit hook无效

时间:2016-07-26 08:18:13

标签: php modx modx-revolution 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`
]]

因此想象用户确实选择了年龄&#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>

1 个答案:

答案 0 :(得分:0)

如果测试不成功,

$ result是未定义的,因此在这种情况下,占位符不会被替换。使用空值初始化它以避免这种情况。

请检查 $ age 中的内容,这是一个数组,因为您使用了 name =&#34; age []&#34;

顺便说一句:$结婚从来没有代码中的价值。