web-dev-qa-db-fra.com

Plus d'informations requises sur la liste prédéfinie du champ de formulaire

Pas beaucoup d'explications trouvées pour le champ de formulaire de liste prédéfinie à l'adresse https://docs.joomla.org/Standard_form_field_types

Quelqu'un peut-il m'aider s'il vous plaît comment cela peut être configuré?

5
Malaiselvan

predefinedlist le champ de formulaire étend le champ list ordinaire. Il permet de créer des menus déroulants avec des options prédéfinies (comme son nom l’indique). Permettant également d'ajouter des options personnalisées via XML.

Par exemple, il est utilisé par les types de champs status, userstate et useractive (également non documentés). Ce sont principalement utilisés par Joomla! Extensions de base.

Je pense que le manque de documentation pour ces champs est causé par l'extension du champ list. En fin de compte, ces champs sont des champs list ordinaires.

Jetez un oeil à status champ code source .

<?php
/**
 * @package     Joomla.Libraries
 * @subpackage  Form
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('predefinedlist');

/**
 * Form Field to load a list of states
 *
 * @since  3.2
 */
class JFormFieldStatus extends JFormFieldPredefinedList
{
    /**
     * The form field type.
     *
     * @var    string
     * @since  3.2
     */
    public $type = 'Status';

    /**
     * Available statuses
     *
     * @var  array
     * @since  3.2
     */
    protected $predefinedOptions = array(
        '-2' => 'JTRASHED',
        '0'  => 'JUNPUBLISHED',
        '1'  => 'JPUBLISHED',
        '2'  => 'JARCHIVED',
        '*'  => 'JALL'
    );
}

Comme vous pouvez le constater, il ajoute simplement Joomla! Statuts de base à protéger $predefinedOptions.

JFormFieldPredefinedList ( source ) étend JFormFieldList ( source ) et son seul but est d'ajouter des options sans les ajouter par le biais de XML. Ces éléments sont maintenant ajoutés au champ list normal en tant qu'options.

Dans le composant personnalisé, cela permet d’ajouter plus d’options (statuts) si nécessaire, en évitant la possibilité de supprimer les éléments nécessaires. Et bien sûr, vous pouvez créer votre propre champ personnalisé et l’étendre de JFormFieldPredefinedList.

Ce code XML provient du filtre d'état de la vue des articles du composant Contenu (com_content). Comme indiqué précédemment, le champ status étend le champ predefinedlist.

<field
    name="published"
    type="status"
    label="COM_CONTENT_FILTER_PUBLISHED"
    description="COM_CONTENT_FILTER_PUBLISHED_DESC"
    onchange="this.form.submit();"
    >
    <option value="">JOPTION_SELECT_PUBLISHED</option>
</field>

Résultat:

enter image description here

Il ajoute une seule option, qui est "- Select Status -" (première option par défaut). Toutes les autres options sont prédéfinies à partir de JFormFieldStatus propriété de classe $predefinedOptions. Vous ne pouviez pas les supprimer ou les modifier via XML.

Fondamentalement, le champ de formulaire predefinedlist (JFormFieldPredefinedList class) est utilisé pour protéger certaines options, le champ qui doit absolument en avoir. Il n'est pas destiné à être utilisé en tant que champ autonome.

3
Rene Korss