如何在Joomla的自定义数据库表中保存扩展参数


How to save extensions parameters in custom database table in Joomla

我想为插件创建一个参数,该参数将从我自己的表中读取并存储在自己的表中。我使用自定义表单字段类型,但我不知道在哪里添加代码。

<?php
    defined('_JEXEC') or die('Restricted access');
    jimport('joomla.form.formfield');
    class JFormFieldMyOptions extends JFormField {
        protected $type = 'myOptions';
        public function getInput() {
              return '<select id="'.$this->id.'" name="'.$this->name.'">'.
                   '<option value="1" >Option 1</option>'.
                   '<option value="2" >Option 2</option>'.
                   '<option value="3" >Option 3</option>'.
                   '</select>';
        }
    }

我想到了以下解决方案。

  • 你应该在你的页面中包含JavaScript。
  • 您应该将 JavaScript 事件附加到表单中。提交表单时,您将获得选项值,并通过 AJAX 将其发送到控制器。该脚本会将值存储在数据库中。您应该使用 RAW 控制器。

    class JFormFieldMyOptions extends JFormField {
        protected $type = 'myOptions';
        public function getInput() {
              return '<select id="'.$this->id.'" name="'.$this->name.'">'.
                   '<option value="1" >Option 1</option>'.
                   '<option value="2" >Option 2</option>'.
                   '<option value="3" >Option 3</option>'.
                   '</select>';
        }
        $document = JFactory::getDocument();
        $document->addScriptDeclaration('
             jQuery(document).ready(function() {
                jQuery("#form_id").on("submit", function(event) {
                   var optionValue = jQuery("#'.$this->id.'").val();
                   // Send the option value to your script via AJAX.
                   // ....
                   // Submit the form.
                   jQuery("#form_id").submit();
                });
            });
       ');
    }}