私は受け取っています
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] =>
)
_
「adminformであった名前属性です。IDはquery-formです。フォームをJoomla.submitform()に渡すか、IDをadminFormに変更する必要があります。..... @ Sharky