web-dev-qa-db-ja.com

TypeError:管理ツールバーのボタンのフォームがNullです

私は受け取っています

TypeError:フォームがnullです

jToolbarHelperを使用してフォームに追加されたカスタムボタンを選択すると、ブラウザコンソールで。

ボタンを他のコンポーネントにそのまま挿入して送信することができるので、フォームの作成方法に何か問題があるのではないかと思いますが、4時間近くたってもそれを理解することができませんでした。

コンポーネント(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>
_

カスタムボタンを追加するための私の行は(view.html.php)です

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

コンソールに次のメッセージが表示されます:

_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
_

そして、スクリプトの66行目付近がクラッシュして書き込みます。

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

フォーム変数が正しく設定されておらず、66行目に到達すると、やりたいことが何もできないと考えています。

これは、$form = JForm::getInstance('query', JPATH_COMPONENT . '/models/forms/query.xml');またはフォーム定義パラメーターを使用してフォームのインスタンスを作成する方法に問題があると思います。

そして、それが重要かどうかはわかりませんが、これはフォームオブジェクトです。

_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

「adminformであった名前属性です。IDはquery-formです。フォームをJoomla.submitform()に渡すか、IDをadminFormに変更する必要があります。..... @ Sharky

1
Irata