Joomla表单变量处理


Joomla form variable handling

我有一种情况,需要为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方法。

我还没有足够的rep来评论,所以我猜测问题可能是什么。假设你正在使用一个模型来设置过滤器的状态,你可以考虑重写populateState方法。

另一种选择是篡改模型中的context属性。例如,如果使用$app->getUserStateFromRequest()之类的东西,启用了特殊过滤器,则可以更改上下文。如果你能发布更多关于你的组件(控制器和模型)设计的信息,我可以提供更多帮助。