ユーザーグループ管理フォームにフィールドを追加するJoomlaプラグインを作成しようとしています。
以前に、ユーザーフォームに新しいタブを追加するプラグインを作成しました。これは、onContentPrepareForm
メソッドを持つプラグインを用意し、$form->load()
または$form->loadFile()
を呼び出して、フィールドの新しいタブのXMLを既存のフォームに挿入することで可能になります。
私が言うように、これはユーザーフォームではうまく機能しますが、グループフォームではまったく何もしません。
プラグインを作成し、フォーム名を_com_users.group
_として参照し、$form->load()
を呼び出してフォームXMLを挿入しました。 XMLは有効であり、エラーは報告されませんが、新しいフォームフィールドは表示されません。
これは、ユーザーフォームが既に複数のタブで定義されているためですが、グループフォームははるかに単純で、そうではありません。
また、$form->setField()
を使用して既存のフォームに(新しいタブを作成せずに)個々のフィールドを追加しようとしましたが、これも効果がありません。
どちらの場合でも、フィールドを挿入した後にvar_dump($form)
を実行すると、フォームのXMLオブジェクト構造に新しいフィールドが表示されますが、構造内の適切な場所にないため、これが原因だと思います彼らは現れていません。
誰かが私をここで正しい方向に向けるのを手伝ってくれる?それはかなりイライラしています。
ありがとうございました。
グループ edit.php
テンプレートファイルは、フォーム上に存在する可能性のある追加のフィールドをレンダリングしません。これは、非常に単純で多少静的なように見えるためです。
おそらく、テンプレートのオーバーライドが必要になるでしょう。そこでは、フィールドセットのカスタムフィールドを反復処理してレンダリングします。
コアフィールドでは、以下のようなものが機能します。
<?php foreach ($this->form->getFieldset('YOUR_CUSTOM_FIELDSET') as $field) : ?>
<div class="control-group">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
<?php endforeach; ?>