【问题标题】:Joomla form variable handlingJoomla 表单变量处理
【发布时间】:2013-08-14 05:49:42
【问题描述】:

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

【问题讨论】:

  • 您找到解决方案了吗?我遇到了类似的问题,还没有解决!
  • 不,但是我在 Joomla 中的技能已经提高到我可以回答的程度,但是没有找到答案导致我放弃了整个想法......我现在的猜测是be 是查看默认类中内置的组件“状态”,然后在调用它们时进行覆盖。
  • 我明白了。我绝对还没有到那个时候;-)
  • 在 JModelLegacy 中有一个名为 populateState 的函数,您可以覆盖它,这是我的猜测,尝试使用它来调用过滤器并“重置”它。当我有时间时,我会尝试更详细的答案:)。
  • 我去看看,谢谢!

标签: php joomla joomla3.1


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多