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プリフックを使用してオプションを設定したいと思います。
プリフックは、フォームタグの前にFormItフォーム定義で呼び出されます。
[[!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;
これはエラーを生成しませんが、空の選択フィールドが残ります。
私はここで何かを見落としているに違いありません、私がこれをやろうとしている方法がうまくいかないことを想像することができます。しかし、私は今立ち往生しています。
誰かがこれを達成するために正しい方向に私を向けることができますか?
FormItIsSelectedは数値配列を必要とし、連想配列を使用します。次のコードを使用して、オプション0を選択します。
<?php
$arrangements = array('0');
$hook->setValue('arrangement',json_encode($arrangements));
return true;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加