0

Joomlaフォームフィールドで奇妙な問題に直面しています。フィールドセットタイプをリストとして追加し、属性をに設定しましたmultiple="true"。ここにコード:

<field name="optional"
            type="list"
            label="Optional"
            description="Optional endorsements"
            class="inputbox"
            size="5"
            multiple="true"
         >

         <option value="Water">
                Water</option>
        <option value="Foundation">
            Foundation</option>
</field>

フォームを保存すると、複数の値を選択すると 1 つの値だけが保存されます。何が問題なのかわからないので、どなたか解決策があれば教えてください。

4

2 に答える 2

4

価値を正しく取得して保存していないため、価値を取得できません。これはあなたがする必要があることです: jTablebind()メソッドで、次の行を追加する必要があります:

if (isset($array['optional']) && is_array($array['optional'])) {
  $registry = new JRegistry;
  $registry->loadArray($array['optional']);
  $array['optional'] = (string) $registry;
}

これにより、複数選択配列が文字列に変換され、データベースに保存されます。

次に、モデルのメソッドgetItemに次の行を追加する必要があります。

if ($item = parent::getItem($pk)) {
  $registry = new JRegistry;
  $registry->loadString($item->optional);
  $item->optional = $registry->toArray();
}

これにより、データベース文字列が配列に変換され、jForm に渡されます。

于 2014-02-21T08:17:10.323 に答える
0

まず、@ di3sel は完全に正しいです。コメントに収まらないものを追加しているだけです。

jTable:loadの代わりにメソッドに2 番目のコードを追加しても問題ありませんjModel::getItem。ただし、コードは少し変更されます。$thisその場合は代わりに使用する必要がありますのでご注意ください$item

parent::load($pk);

$registry = new JRegistry;
$registry->loadString($this->optional);
$this->optional = $registry->toArray();

これは、1 つのクラス ファイルのみを変更する必要があるという観点からも優れています。これが少なくとも誰かに役立つことを願っています。

于 2014-05-08T10:32:08.710 に答える