【发布时间】:2017-06-05 13:24:15
【问题描述】:
我创建了一个自定义 Joomla MVC 组件,用于跟踪汽车里程信息。其中一个重要部分是以每辆车为基础存档旧里程信息,并能够将其显示给登录用户。我要做的是在里程更新时将旧里程信息“存档”到我数据库中的单独表中。现在我不确切知道如何覆盖默认的 save() 函数,但我想从一个能够将记录写入表的自定义工具栏函数开始。干净利落。这是我到目前为止所做的:
我在管理员/组件/com_cars/views/car/view.html.php 中的工具栏添加了一个新按钮
JToolBarHelper::custom('car.archive', 'archive.png', 'archive_f2.png', 'Archive Mileage', false);
然后我将功能存档添加到“administrator/components/com_cars/controllers/car”
添加一个简单的 echo 语句可以确认该按钮正在工作。但是,接下来我需要的是,当单击“存档里程”按钮时,活动记录的信息(即从列表中打开的记录)被写入新表。所以基本上我正在复制选定的记录,但将其保存到不同的表中。因此,我需要更改编程,以便使用不同的表来放入数据。这就是我的“汽车”(不是汽车)的控制器文件现在的样子:
class CarsControllerCar extends JControllerForm
{
/**
* Constructor
*
* @throws Exception
*/
public function __construct()
{
$this->view_list = 'cars';
parent::__construct();
}
public function archive()
{
// Get the input
$input = JFactory::getApplication()->input;
$ids = $this->input->get('cid', array(), 'array');
try
{
if (empty($ids))
{
throw new Exception(JText::_('COM_CARS_NO_ELEMENT_SELECTED'));
}
ArrayHelper::toInteger($ids);
$model = $this->getModel();
$model->archive($ids);
$this->setMessage(Jtext::_('COM_CARS_ITEMS_SUCCESS_DUPLICATED'));
}
catch (Exception $e)
{
JFactory::getApplication()->enqueueMessage($e->getMessage(), 'warning');
}
$this->setRedirect('index.php?option=com_cars&view=cars');
}
}
然后应该将数据传递给模型,模型将其插入到正确的表中。我应该如何以最好的方式构建模型来接收和处理数据并不完全清楚。我可以简单地使用数据库查询将其添加到数据库中,还是应该根据重复功能使用代码来完成工作?
如何将这个特定记录的数据获取到控制器中,然后将其传递给模型以将其处理到数据库中,这对我来说有点模糊。
【问题讨论】:
标签: joomla joomla-extensions custom-component