web-dev-qa-db-ja.com

ユーザーグループ管理フォームへのフィールドの追加

ユーザーグループ管理フォームにフィールドを追加するJoomlaプラグインを作成しようとしています。

以前に、ユーザーフォームに新しいタブを追加するプラグインを作成しました。これは、onContentPrepareFormメソッドを持つプラグインを用意し、$form->load()または$form->loadFile()を呼び出して、フィールドの新しいタブのXMLを既存のフォームに挿入することで可能になります。

私が言うように、これはユーザーフォームではうまく機能しますが、グループフォームではまったく何もしません。

プラグインを作成し、フォーム名を_com_users.group_として参照し、$form->load()を呼び出してフォームXMLを挿入しました。 XMLは有効であり、エラーは報告されませんが、新しいフォームフィールドは表示されません。

これは、ユーザーフォームが既に複数のタブで定義されているためですが、グループフォームははるかに単純で、そうではありません。

また、$form->setField()を使用して既存のフォームに(新しいタブを作成せずに)個々のフィールドを追加しようとしましたが、これも効果がありません。

どちらの場合でも、フィールドを挿入した後にvar_dump($form)を実行すると、フォームのXMLオブジェクト構造に新しいフィールドが表示されますが、構造内の適切な場所にないため、これが原因だと思います彼らは現れていません。

誰かが私をここで正しい方向に向けるのを手伝ってくれる?それはかなりイライラしています。

ありがとうございました。

1
Simba

グループ 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; ?>
1
FFrewin