我的tmpl / default.php中有一个简单的表单:
<form id='AddForm' action="<?php echo JRoute::_('index.php?option=com_mycomponent&task=addcam'); ?>" >
<p>
<label for="CamName">Name:
</label>
<input type="text" id="CamName" name="cam_name" />
</p>
<button type='submit' class='submit_cam' name='addcam' value='Add'>Add</button>
<button type='reset' class='cancel_changes' name='cancel_changes' value='Cancel'>Cancel</button>
</form>
在我的controller.php文件中,我正在尝试处理值:
function addcam()
{
$add_name=JRequest::getString('cam_name');
$model = &$this->getModel();
$model->AddWebcam($add_name); //send to model to add to DB
}
在我的模型中,我只返回查询结果。通过这个实现,我只是被路由到一个空页面。我想让它刷新当前页面。通常,您使用action=""
执行此操作,但在我的情况下,我需要它来路由到控制器中名为addcam
的函数。或者有更好的方法吗?
答案 0 :(得分:1)
Joomla在执行任务时的常用技巧是让该函数在结尾处完全重定向到视图。这可以防止页面刷新尝试重新提交数据并导致客户端更清晰的URL。为此,请尝试以下操作:
function addcam()
{
$add_name=JRequest::getString('cam_name');
$model = &$this->getModel();
$model->AddWebcam($add_name); //send to model to add to DB
JFactory::getApplication()->redirect(JRoute::_(index.php?option=com_mycomponent&view=whatever));
}
显然,将JRoute位更新为您实际需要的URL。如果您愿意,也可以添加一条消息(例如“已保存!”):http://docs.joomla.org/JApplication::redirect/1.6