web-dev-qa-db-fra.com

Champ personnalisé du composant Joomla (listfieldtype) et comment reproduire les chaînes de texte en vue au lieu de valeurs numériques

Je construis un composant Joomla et je veux un champ spécifique (listtype) dans le composant. Dans administrateur/composant/com_test/models/forms/testfield.xml, j'ai le code suivant:

<field
  name="test"
  type="testfield"
  label="JOPTION_FILTER_TESTFIELD_LABEL"
  description="JOPTION_FILTER_TESTFIELD_DESC"
  id="testfield"
  class="inputbox"
/>

Dans administrateur/composant/com_test/models/fields/testfield.php, j'ai le code suivant:

JFormHelper::loadFieldClass('list');

/**
 * Test Field class.
 */

class JFormFieldTestField extends JFormField {

    protected $type = 'TestField';

    public function getInput() {
        return '<select id="'.$this->id.'" name="'.$this->name.'">'.
               '<option value="">select test</option>'.
               '<option value="1">test1</option>'.
               '<option value="2">test2</option>'.
               '<option value="3">test3</option>'.
               '</select>';
   }
}

Dans administrateur/composant/com_test/views/tests/tmpl/default.php, j'ai créé une colonne 'test':

<td class="small hidden-phone">
    <?php   echo $item->test; ?>
</td>

J'ai un problème pour enregistrer les données 1, 2, 3 dans la base de données. Deuxièmement, je souhaite qu'au lieu des valeurs 1, 2, 3 enregistrées dans la base de données, les valeurs 'test1', 'test2', 'test3' être reproduit dans cette colonne. J'ai essayé plusieurs choses (par exemple avec JTEXT dans 'testfield.php'), mais jusqu'à présent, je n'ai pas réussi à trouver le code correct. Quelqu'un peut-il m'aider davantage?

1
Franky

Vous devez mettre ce champ dans le paramet fieldset, voyez comment com_content l'a fait. Ensuite, vous devez faire $ item-> params-> get ('test');

Je voudrais également étendre à partir de JFormFieldList et ensuite remplacer la fonction getOptions, puis mal sera la sélection générée automatiquement.

1
Laoneo