0

我的 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控制器中调用的函数。还是有更好的方法来做到这一点?

4

1 回答 1

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

于 2013-04-22T17:42:03.737 回答