it-swarm.com.de

TypeError: Formular ist Null auf Schaltfläche in der Admin-Symbolleiste

Ich empfange

TypeError: form ist null

in der Browserkonsole, wenn ich eine benutzerdefinierte Schaltfläche auswähle, die mit JToolbarHelper zu einem Formular hinzugefügt wurde.

Ich kann die Schaltfläche so wie sie ist in jede andere Komponente einfügen und sie wird gesendet, sodass ich vermute, dass etwas an der Art und Weise liegt, wie ich mein Formular erstellt habe, aber nach fast 4 Stunden konnte ich es nicht herausfinden.

Ich habe versucht, ein minimales Formular für eine Komponente zu erstellen (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>

Meine Zeile zum Hinzufügen der benutzerdefinierten Schaltfläche lautet (view.html.php)

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

In der Konsole erhalte ich folgende Meldung:

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

Und in Zeile 66 des Skripts stürze ich ab und brenne.

 * 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
    }

Ich denke, dass die Formularvariable nicht richtig gesetzt wird und wenn sie in Zeile 66 ankommt, kann sie nicht tun, was sie will.

Ich vermute, es liegt an der Art und Weise, wie ich eine Instanz meines Formulars mit $form = JForm::getInstance('query', JPATH_COMPONENT . '/models/forms/query.xml'); oder in meinen Formulardefinitionsparametern erstelle.

Und ich bin mir nicht sicher, ob es darauf ankommt, aber dies ist das Formularobjekt.

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

"Das Namensattribut war adminform. Die ID ist ein Abfrageformular. Sie müssen das Formular entweder an Joomla.submitform () übergeben oder die ID in adminForm ändern." ... @ Sharky

1
Irata