在MODX Revo网站中,我有一个FormIt表单,其中一个select字段应如下所示:
<select name="arrangement" id="arrangement">
<option value="0" [[!+fi.arrangement:FormItIsSelected=`0`]]>Arrangement 0</option>
<option value="1" [[!+fi.arrangement:FormItIsSelected=`1`]]>Arrangement 1</option>
<option value="2" [[!+fi.arrangement:FormItIsSelected=`2`]]>Arrangement 2</option>
我想用FormIt prehook设置选项,称为'getArrangements'。
在表单标记之前的FormIt表单定义中调用prehook:
[[!FormIt?
&preHooks=`getMaxYear,getArrangements`
我成功设置了一个简单输入字段的值,第一个名为prehook'getMaxYear',我很清楚它是如何工作的,但是对于select字段,事情就不太清楚了。根据MODX RTFM,它应该通过json编码数组来完成,如:
$hook->setValue('hobbies',json_encode(array('music','films','books')));
我从选择HTML中删除了选项标记,并创建了一个名为“getArrangements”的代码段:
<?php
$arrangements = array( '0' => 'Arrangement 0',
'1' => 'Arrangement 1',
'2' => 'Arrangement 2');
$hook->setValue('arrangement',json_encode($arrangements));
return true;
这不会产生错误,但它会留下一个空的选择字段。
我必须在这里忽略一些东西,我可以想象我试图这样做的方式不起作用。但我现在卡住了。
有人能指出我正确的方向来实现这个目标吗?
答案 0 :(得分:1)
FormItIsSelected想要一个数值数组并使用关联数组。使用以下代码选择选项0。
<?php
$arrangements = array('0');
$hook->setValue('arrangement',json_encode($arrangements));
return true;
答案 1 :(得分:0)
可能我的最终解决方案适用于有同样问题的其他人: 我制作了一个名为&#39; getArrangementOptions&#39;:
的片段mutable
在select标签内调用它:
$arrangements = array( '0' => 'Arrangement 0',
'1' => 'Arrangement 1',
'2' => 'Arrangement 2');
$output = '';
foreach ($arrangements as $key => $value) {
$output .= '<option value="'.$key.'" [[!+fi.arrangement:FormItIsSelected=`'.$key.'`]]>'.$value.'</option>';
}
return $output;
它有多容易:)