Joomlaサブフォームフィールドを、multiple = "true"をオンにして使用しようとしています(古いモーダルの繰り返し可能なメソッドを使用する代わりに)。
私の問題は、データがデータベースに保存されないことです。複数の例を読みましたが、何が悪いのかわかりません。
Multiple = "true"をオフにすると、サブフォームはデータをJSON文字列としてデータベースに正常に保存します。再びオンにすると、何を試しても保存されません。
私の問題は基本的にこれですが、解決策がなく、単純にコメントするだけの評判がありません: なぜ私のサブフォームフィールドデータが保存されないのですか?
私のコンポーネントXML:
<field name="list_links_url"
type="subform"
label="Subform Field"
description="Subform Field Description"
layout="joomla.form.field.subform.repeatable-table"
multiple="true"
formsource="/administrator/components/com_products/model/form/subforms/subform_list_links.xml"
/>
サブフォームXML:
<?xml version="1.0" encoding="UTF-8"?>
<form>
<field name="link"
label="Link"
type="text"
description="Enter a URL"
/>
</form>
FYI-Joomla 3.6.5とPHP 7.0.10の新しいインストール
どんな助けでも大歓迎です。
テーブルのバインド関数に、これを追加します。
if ( ( !empty( $array[ 'list_links_url' ] ) && ( is_array( $array[ 'list_links_url' ] ) ) ) ) {
$this->_jsonEncode[] = "list_links_url";
}
私はこれが古い問題であることを知っていますが、私自身の研究に関するこの投稿に出くわしたので、私の解決策を共有したいと思います。残念ながら、この可能性が実装されたJoomlaのバージョンをたどることはできません。
対応するテーブルクラスの先頭に次の行を追加するだけです。この情報により、Joomlaコアテーブルクラスのbindメソッドは、指定されたフィールドをそれ自体で変換します。
protected $_jsonEncode = array('fieldname');
最終的にはスチュアートスティードマンの投稿と同じですが、コアバインドメソッドをオーバーライドする必要はありません。