使用joomla组件刷新页面

时间:2013-04-22 15:49:04

标签: model-view-controller joomla joomla2.5

我的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的函数。或者有更好的方法吗?

1 个答案:

答案 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