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 は、フォーム タグの前に FormIt フォーム定義で呼び出されます。
[[!FormIt?
&preHooks=`getMaxYear,getArrangements`
最初に呼び出されたプリフック「getMaxYear」で単純な入力フィールドの値を設定することに成功しました。それがどのように機能するかは明らかですが、選択フィールドでは状況があまり明確ではありません。MODX RTFM によると、次のように、配列を json エンコードすることによって行う必要があります。
$hook->setValue('hobbies',json_encode(array('music','films','books')));
select HTML からオプション タグを削除し、「getArrangements」という名前のスニペットを作成しました。
<?php
$arrangements = array( '0' => 'Arrangement 0',
'1' => 'Arrangement 1',
'2' => 'Arrangement 2');
$hook->setValue('arrangement',json_encode($arrangements));
return true;
これでエラーは発生しませんが、空の選択フィールドが残ります。
ここで何かを見落としているに違いありません。これをやろうとしている方法がうまくいかないことは想像できます。しかし、私は今立ち往生しています。
これを達成するために誰かが私を正しい方向に向けることができますか?