1

我有一种情况,我需要为 Joomla 组件中的特定过滤器创建快捷方式。

问题是我无法取消设置,因为我不知道 Joomla 是否将表单字段设置为它自己的会话处理程序、请求处理程序或某种自定义处理程序。似乎也没有关于这个具体案例的任何文件。

完整的情况是我有一个链接,它将在与另一个链接相同的视图中自动过滤(在组件侧边栏中)。一个视图将只是一个特定的过滤器,另一个是标准的。因此,当您单击过滤后的视图时,我需要它,它将重置当前过滤器以确保所有内容都按原样显示,反之亦然,因此单击返回将再次重置过滤器。

我为此尝试了多种方法,尽管我可以始终强制它进行过滤,但是当我使用迄今为止尝试过的任何技术重新进入最后一页时,它不会重置表单,当然我想避免绕过Joomla 的默认功能。

if(JRequest::getVar('filter_group_id',false)==10){
    JRequest::setVar('last_filter',true);
    EthicstoolHelper::addSubmenu('supervisors');
}else{
    if(JRequest::getVar('last_filter',false)===true){
        JRequest::setVar('last_filter',false);
        JRequest::setVar('filter_group_id',false)
    }
    EthicstoolHelper::addSubmenu('users');
}

这是我最近尝试过的想法,如您所见,我尝试将值重置为 false,希望 Joomla 将其读取为未设置,因为 JRequest 没有内置的 unset 方法。

4

1 回答 1

1

我还没有足够的代表发表评论,所以我猜测可能是什么问题。假设您正在使用模型来设置过滤器的状态,您可以查看覆盖该populateState方法。

另一种选择是摆弄context模型中的属性。例如,如果您启用了特殊过滤器(如果您使用$app->getUserStateFromRequest(). 如果您可以发布有关组件设计(控制器和模型)的更多信息,我可以提供更多帮助。

于 2013-12-20T12:37:22.797 回答