在 MODX Revo 站点中,我有一个 FormIt 表单,其中的选择字段应如下所示:
<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>
我想使用名为“getArrangements”的 FormIt prehook 设置选项。
prehook 在 FormIt 表单定义中在表单标签之前调用:
[[!FormIt?
&preHooks=`getMaxYear,getArrangements`
我成功地使用第一个名为 prehook 'getMaxYear' 的简单输入字段设置了值,我很清楚它是如何工作的,但是对于选择字段,事情就不太清楚了。根据 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;
这不会产生错误,但它给我留下了一个空的选择字段。
我必须在这里忽略某些东西,我可以想象我尝试这样做的方式行不通。但我现在被困住了。
有人能指出我正确的方向来完成这个吗?