web-dev-qa-db-fra.com

TypeError: le formulaire est nul sur le bouton dans la barre d'outils Admin

Je reçois

TypeError: le formulaire est nul

dans la console du navigateur lorsque je sélectionne un bouton personnalisé ajouté à un formulaire à l'aide de JToolbarHelper.

Je peux insérer le bouton dans n'importe quel autre composant tel quel et il se soumettra donc je soupçonne qu'il y a quelque chose dans la façon dont j'ai créé mon formulaire, mais après près de 4 heures, je n'ai pas pu le comprendre.

J'ai essayé de créer une forme minimale pour un composant (default.php)

defined('_JEXEC') or die;

use Joomla\CMS\Language\Text;
use Joomla\CMS\Factory;

$form = JForm::getInstance('query', JPATH_COMPONENT . '/models/forms/query.xml');
?>

<form
    action="<?php echo JRoute::_('index.php?option=com_accentis&view=query'); ?>"
    method="post" enctype="multipart/form-data" name="adminForm" id="query-form" >

    <?php echo $form->renderFieldset('query');  ?>

    <input type="hidden" name="task" value=""/>
    <input type="hidden" name="view" value="query" />
    <?php echo JHtml::_('form.token'); ?>

</form>

Ma ligne pour ajouter le bouton personnalisé est (view.html.php)

JToolbarHelper::custom('query.loadData', "" , "" , 'Load Data', false);

Dans la console, je reçois ce message:

TypeError: form is null 2 core-uncompressed.js:66:4
submitform http://maralinga.test/media/system/js/core-uncompressed.js?0586eb80516116b3723cefdbfa5e045f:66
submitbutton http://maralinga.test/media/system/js/core-uncompressed.js?0586eb80516116b3723cefdbfa5e045f:99
onclick http://maralinga.test/administrator/index.php?option=com_accentis&view=query:1

Et autour de la ligne 66 du script, je tombe en panne et je brûle.

 * Generic submit form
 *
 * @param  {String}  task      The given task
 * @param  {node}    form      The form element
 * @param  {bool}    validate  The form element
 *
 * @returns  {void}
 */
Joomla.submitform = function(task, form, validate) {

    if (!form) {
        form = document.getElementById('adminForm');
    }

    if (task) {
        form.task.value = task;             <===Line 66
    }

Je pense que la variable de formulaire n'est pas définie correctement et lorsqu'elle arrive à la ligne 66, elle ne peut pas faire ce qu'elle veut.

Je soupçonne que c'est quelque chose avec la façon dont je crée une instance de mon formulaire avec la $form = JForm::getInstance('query', JPATH_COMPONENT . '/models/forms/query.xml'); ou dans mes paramètres de définition de formulaire.

Et je ne sais pas si c'est important, mais c'est l'objet de formulaire.

Joomla\CMS\Form\Form Object
(
    [data:protected] => Joomla\Registry\Registry Object
        (
            [data:protected] => stdClass Object
                (
                )

            [initialized:protected] => 
            [separator] => .
        )

    [errors:protected] => Array
        (
        )

    [name:protected] => query
    [options:protected] => Array
        (
            [control] => 
        )

    [xml:protected] => SimpleXMLElement Object
        (
            [fieldset] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [name] => query
                            [label] => COM_ACCENTIS_FIELDSET_QUERY
                        )

                    [field] => Array
                        (
                            [0] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [name] => searchId
                                            [type] => text
                                            [label] => COM_ACCENTIS_FIELD_SEARCHID_LABEL
                                            [description] => COM_ACCENTIS_FIELD_SEARCHID_DESC
                                            [labelclass] => control-label
                                        )

                                    [0] => 

                                )

                            [1] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [name] => feature
                                            [type] => list
                                            [label] => COM_ACCENTIS_FIELD_FEATURE_LABEL
                                            [description] => COM_ACCENTIS_FIELD_FEATURE_DESC
                                            [labelclass] => control-label
                                        )

                                    [option] => Array
                                        (
                                            [0] => Inventory
                                            [1] => Sales Report
                                        )

                                )

                            [2] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [name] => params
                                            [type] => text
                                            [multiple] => true
                                            [formsource] => administrator/components/com_accentis/models/forms/queryparams.xml
                                            [label] => COM_ACCENTIS_FIELD_PARAMS_LABEL
                                            [description] => COM_ACCENTIS_FIELD_PARAMS_DESC
                                            [labelclass] => control-label
                                        )

                                    [0] => 

                                )

                        )

                )

        )

    [repeat] => 
)
2
Irata

"C'est l'attribut de nom qui était adminform. L'ID est un formulaire de requête. Vous devez soit passer le formulaire à Joomla.submitform (), soit changer l'ID en adminForm." ... @ Sharky

1
Irata