web-dev-qa-db-ja.com

Joomla 3.6ネストされたサブフォームが保存されない

新しいサブフォーム機能を使用してネストされたフォームを実装しようとしています。これにより、開発者の可読性が大幅に向上し、すでに可能であると私は考えていましたが、テスト後はもう確信が持てません。試してみたところ、ネストされたフォームが表示されている間、値が保存されないことがわかりました。関連するコードは次のとおりです。

mod_something.xml(繰り返し可能)

            <field name="levelone" type="subform"
              formsource="/modules/mod_something/models/forms/levelone.xml"
              min="1"
              max="9999999999"
              multiple="true"
              layout="joomla.form.field.subform.repeatable"
              groupByFieldset="false"
              buttons=""
              label="Level 1"
              description="" />

levelone.xml

            <field name="leveltwo" type="subform"
              formsource="/modules/mod_something/models/forms/leveltwo.xml"
              min="1"
              max="9999999999"
              multiple="false"
              layout="joomla.form.field.subform.default"
              groupByFieldset="false"
              buttons=""
              label="Level 2"
              description="" />

leveltwo.xml

            <?xml version="1.0" encoding="UTF-8"?>
            <form>
                <field
                    name="test"
                    type="text"
                    default=""
                    label="Test"
                    size="10"
                />
            </form>

これは少し奇妙に思われますが、これは、使用する将来のテンプレートを作成するためのビルドにすぎません。

フィールド名testはうまく表示されますが、入力は保存されません。このフィールドをlevelone.xml(1レベル上の)に移動すると、保存されます。

うまくいけば、誰でもそれを節約する方法を知っています。

助けてくれたみんなに感謝!

2
purple11111

これまでのところ、Joomlaでこれを行うことはまだ不可能です。ネストされたサブフォーム、つまりマルチレベルのサブフォームが議題になっています。良いボランティアがこの問題に取り組む準備ができていることを望んでいるだけです。

詳細はここにあります: https://github.com/joomla/joomla-cms/issues/11551

一方、唯一可能な解決策は、独自のJavaScriptを追加し、深いレベルに追加したすべての入力/選択フィールドから値をコピーして、それらを基本レベルに保存することです。理論的にはこれは実際に機能しますが、管理することは絶対に地獄です。

1
purple11111