Php Joomla-在哪里编辑插入SQL?

Php Joomla-在哪里编辑插入SQL?,php,mysql,joomla,joomla-component,database-abstraction,Php,Mysql,Joomla,Joomla Component,Database Abstraction,我现在正在学习创建MVC组件。我研究了使用组件创建者创建的代码 现在我想在编辑表单中单击save按钮后找到SQLInsert函数,表单发送到哪里调用insert函数 com_astock/admin/view/addstock/tmpl/edit.php <?php /** * @version 1.0.0 * @package com_astock * @copyright Copyright (C) 2013. All rights reserved. *

我现在正在学习创建MVC组件。我研究了使用组件创建者创建的代码

现在我想在编辑表单中单击save按钮后找到SQLInsert函数,表单发送到哪里调用insert函数

com_astock/admin/view/addstock/tmpl/edit.php

<?php
/**
 * @version     1.0.0
 * @package     com_astock
 * @copyright   Copyright (C) 2013. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Joe <joequah1@hotmail.com> - http://
 */
// no direct access
defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');

// Import CSS
$document = JFactory::getDocument();
$document->addStyleSheet('components/com_astock/assets/css/astock.css');
?>
<script type="text/javascript">
    js = jQuery.noConflict();
    js(document).ready(function(){

    });

    Joomla.submitbutton = function(task)
    {
        if(task == 'addstock.cancel'){
            Joomla.submitform(task, document.getElementById('addstock-form'));
        }
        else{

            if (task != 'addstock.cancel' && document.formvalidator.isValid(document.id('addstock-form'))) {

                Joomla.submitform(task, document.getElementById('addstock-form'));
            }
            else {
                alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED')); ?>');
            }
        }
    }
</script>

<form action="<?php echo JRoute::_('index.php?option=com_astock&layout=edit&stock_code=' . (int) $this->form->getInput('stock_code')); ?>" method="post" enctype="multipart/form-data" name="adminForm" id="addstock-form" class="form-validate">
    <div class="row-fluid">
        <div class="span10 form-horizontal">
            <fieldset class="adminform">

                        <div class="control-group">
                <div class="control-label"><?php echo $this->form->getLabel('stock_code'); ?></div>
                <div class="controls"><?php echo $this->form->getInput('stock_code'); ?></div>
            </div>
                <div class="control-group">
                <div class="control-label"><?php echo $this->form->getLabel('name'); ?></div>
                <div class="controls"><?php echo $this->form->getInput('name'); ?></div>
            </div>
            <div class="control-group">
                <div class="control-label"><?php echo $this->form->getLabel('state'); ?></div>
                <div class="controls"><?php echo $this->form->getInput('state'); ?></div>
            </div>
                    <div class="control-group">
                <div class="control-label"><?php echo $this->form->getLabel('time_created'); ?></div>
                <div class="controls"><?php echo $this->form->getInput('time_created'); ?></div>
            </div>
            <div class="control-group">
                <div class="control-label"><?php echo $this->form->getLabel('created_by'); ?></div>
                <div class="controls"><?php echo $this->form->getInput('created_by'); ?></div>
            </div>


            </fieldset>
        </div>



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

    </div>
</form>

js=jQuery.noConflict();
js(document).ready(function(){
});
Joomla.submitbutton=函数(任务)
{
如果(任务==“addstock.cancel”){
submitform(task,document.getElementById('addstock-form');
}
否则{
if(task!=“addstock.cancel”&&document.formvalidator.isValid(document.id('addstock-form')){
submitform(task,document.getElementById('addstock-form');
}
否则{
警报(“”);
}
}
}

无法将代码另存为控制器和模型扩展父类。 您可以在控制器和模型中创建自己的公共函数,也可以覆盖它。 基本上是这样的:

  • 调用控制器方法“Save”,该方法验证数据并加载模型
  • 控制器调用模型并向其传递有效数据
  • 模型加载JTable,它存储数据并返回true或false
  • 模型将bool返回给控制器
  • 控制器处理重定向
  • 课程位于:
    libraries/legacy/controller和libraries/legacy/model

    尝试使用创建组件,并查看它是如何创建的。它可能是一个很好的倾斜工具。

    简单的预凹钩:

    转到您的模型并写下:

    public function save($data){
    
        // do stuff with $data
    
        return parent::save($data);
    
    }
    
    最好使用prepareTable函数:

    protected function prepareTable($table)
    {
    
            $table->fieldname = 'new_value';
    
    }
    

    尝试遵循官方教程您也可以下载示例com_helloworld我曾经尝试过,但它在joomla 3中工作不好,我找不到SQL插入函数Too所以如果我想覆盖,我们应该在?函数名为save right?取决于要覆盖的保存部分。您想在保存之前更改一些数据,还是什么?我想控制保存到数据库中的内容。我想覆盖上面的mysql插入。为什么要覆盖它?我建议看看现有的核心组件,比如com_weblinks。正如di3sel所描述的,所有的东西都在控制器、模型和表中处理。它们还负责事件触发和数据验证。我也尝试过组件创建者,他们非常有限,并且没有最新的Joomla实际代码。还有一个post save hook函数。如果要控制保存的内容,请重写表中的chick函数。好的,我将尝试查看。我们可以使数据库主键不自动增加吗?
    protected function prepareTable($table)
    {
    
            $table->fieldname = 'new_value';
    
    }