1

私はJoomlaプロファイル編集フォームに取り組んでいます。私がやりたいのは、主にCSSクラスを追加するために使用されるマークアップを変更することです。基本的に本当にシンプルなもの。問題は、フォームフィールドがJoomlaによって処理され、次のようなループで提供されることです。

<?php foreach($this->form->getFieldsets() as $fieldset):?>
  <?php $fields = $this->form->getFieldset($fieldset->name);?>
  <?php foreach($fields as $field):?>
    <?php echo $field->label; ?>
    <?php echo $field->input;?>
  <?php endforeach;?>
<?php endforeach;?>

拡張機能は独自のフィールドをループに追加する可能性があるため、デフォルトの入力をハードコーディングすることはできません。たとえば、私が知らないのは、入力のラベルにクラスを追加する方法です。入力属性を変更するために使用してみましJForm::setFieldAttributeたが、オーバーライドから使用しても効果がないようです。誰かヒントはありますか?

4

1 に答える 1

0

プロファイル プラグインの要素は、profiles/profile.xmlファイルで定義されます。入力にクラスを追加するには、次の 2 つの方法のいずれかを実行できます。まず、xml ファイルを編集します。フォーム フィールドの大部分は、たとえばデフォルトのプロファイル プラグインなどで、クラスを受け入れます。

        <field
            name="address1"
            type="text"
            id="address1"
            description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC"
            filter="string"
            label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL"
            message="PLG_USER_PROFILE_FIELD_ADDRESS1_MESSAGE"
            size="30"
            class="custom_class"
        />

クラスを最後に追加したことがわかります。ループなしでフォーム フィールドを含めることもできます。この例については、weblinks コンポーネント (フォーム ビュー) を参照してください。彼らは次のようにします:

        <div class="formelm">
            <?php echo $this->form->getLabel('address1'); ?>
            <?php echo $this->form->getInput('address1'); ?>
        </div>

したがってaddress1、xml ファイルで定義されているフィールドの名前が表示されます。これは、関連するデータをエコーアウトするだけです。これは、クラスを追加するための完全に受け入れられる方法でもあります。お役に立てれば。

于 2013-03-04T17:59:50.267 に答える