おはようございます、
質問があります。自分のコンポーネントに自分のフィールドを作成します。 「SimpleXMLElement」クラスを使用しています。フォームはgetFormを介して完全に生成します:
$newfieldset = new SimpleXMLElement('<fieldset></fieldset>');
$newfieldset->addAttribute('name', 'case_customfields');
foreach($customfields as $customfield)
{
$field = $newfieldset->addChild('field');
$field->addAttribute('name', $customfield->field_name . '-' . $customfield->id);
$field->addAttribute('type', $customfield->field_type);
$field->addAttribute('default', $customfield->field_default_value);
$field->addAttribute('label', $customfield->field_label);
$field->addAttribute('description', $customfield->field_description);
}
$form->setField($newfieldset);
return $form;
自分のフィールドの値を返すgetItem関数も変更しました。
$customfields_value = $this->getCustomFieldsValues($pk);
foreach($customfields_value as $customfield_value)
{
$singleCustomField = $this->getSingleCustomFields($customfield_value->custom_fields_id);
$field_id = $singleCustomField['id'];
$field_name = $singleCustomField['field_name'];
$field = $field_name . '-' . $field_id;
$item->$field = $customfield_value->value;
}
return $item;
完璧にも働きます。
問題は、編集フォームにカスタム値が表示されないことです。 XMLで静的フォーム(モデル/フォーム)を作成すると、データが作成されます。 「SimpleXMLElement」で作成されたフィールドの場合-データはフォームにありません。
もちろん、getFormの「SimpleXMLElement」クラスを介してフォームにデータをロードすることはできますが、それは悪い方法のようです。
どこで間違えますか?よろしくお願いします。
私のせい。注文間違い。正しくは:1.最初に-フォームを作成し、SimpleXMLElementに変換します。
$ formXml = new SimpleXMLElement(file_get_contents(JPATH_COMPONENT.'path to xml file '));