2016-07-26 3 views
0

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

До сих пор у меня есть фрагмент/крючок «вычисления», как это:

<?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? 
&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.

Даже без calcultion части я просто получаю пустой заполнитель [[+ все]]:

<?php 

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

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

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

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

EDIT: добавить некоторые формы-код:

<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

Не могли бы вы добавить код формы, пожалуйста. – Jako

ответ

0

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

Пожалуйста, проверьте, что в $ возрасте, это массив, потому что вы использовали имя = «возраст []»

КСТАТИ: $ замужем никогда не имеет значения в вашем коде.

+0

Thx Jako для вашего ответа! Добавляя "$ result =" ";" в строке 4 Я не получаю «чистый» заполнитель ([[+ all]]), вместо этого я получаю пустое местозаполнитель, не содержащий ничего. Я также проверил $ ​​age, но он определенно содержит одну строку/число, это не массив. «замужняя» часть, которую я добавил для того, чтобы показать, чего я хотел достичь, не проверял это раньше, но вы правы ... –

+0

Я немного продвинулся, изменив ** name = "age []" ** to ** name = "age" ** ... теперь первые переменные считываются и вычисляются ... но теперь у меня есть массив ** children [] **, проверено несколько флажков, а массив как разные значения; теперь я пытаюсь получить каждый отдельный выбор и дать каждому уникальное значение ... –

+0

Вы можете использовать $ children = $ hook-> getValue ('children'); и в этом случае сделайте foreach на $ children. – Jako

Смежные вопросы