web-dev-qa-db-fra.com

Le champ de formulaire personnalisé ne fonctionne pas

Ma tentative est de reconstruire l'exemple ici: https://docs.joomla.org/Creating_a_custom_form_field_type

D'une manière ou d'une autre, Joomla ne voit pas le fichier City.php Dans administrator/components/com_testing/models/fields. Même lorsque je force une erreur de syntaxe dans le fichier City.php (Par exemple, en supprimant un ; À la fin d'une ligne), aucune erreur ne s'affiche. Je suppose donc que le fichier City.php N’est même pas inclus.

J'ai essayé d'inclure le nouveau chemin de champ via addfieldpath dans la définition fieldset- et également avec JForm::addFieldPath(JPATH_COMPONENT . '/models/fields'); dans la fonction getForm du modèle. Rien n'a fonctionné jusqu'à présent.

La sortie est un champ de saisie de texte, ce que je ne veux pas.

Voici mon code source:

Le fichier City.php Est équivalent à celui du lien ci-dessus.

administrator/components/com_testing/models/forms/testing.xml:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset addfieldpath="/administrator/components/com_testing/models/fields">
        <field
            name="testingfield"
            type="City"
            multiple="true"
            size="7"
            label="Testinglabel">
                    <option value="A">A</option>
                    <option value="B">B</option>
                    <option value="C">C</option>
                    <option value="D">D</option>
                    <option value="E">E</option>
                    <option value="F">F</option>
                    <option value="G">G</option>
        </field>
    </fieldset>
</form>
3
xola

Si votre champ est dans l'administrateur, vous voulez utiliser ce chemin d'inclusion: JFormHelper::addFieldPath(JPATH_COMPONENT_ADMINISTRATOR.'/models/fields');

2
David Hayes

Définissez le type sur city en minuscule. Si cela ne fonctionne toujours pas, essayez d’ajouter addfieldpath au champ en tant que

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset>
        <field
            addfieldpath="/administrator/components/com_testing/models/fields"
            name="testingfield"
            type="City"
            multiple="true"
            size="7"
            label="Testinglabel">
                    <option value="A">A</option>
                    <option value="B">B</option>
                    <option value="C">C</option>
                    <option value="D">D</option>
                    <option value="E">E</option>
                    <option value="F">F</option>
                    <option value="G">G</option>
        </field>
    </fieldset>
</form>

comme dans certains cas, le chemin d'accès aux champs n'est pas accessible.

Vérifiez également le fichier FormField que vous utilisez et faites correspondre les cas comme dans l'exemple de fichier.

Dans un cas, j'ai rencontré un problème que le formulaire ne charge pas, essayez donc de créer un même fichier avec un autre type, par exemple: remplacez la ville par Exemple et n'oubliez pas de faire correspondre le cas.

J'espère que cela t'aides.

1
Pratyush