在joomla后端构建自定义过滤器

时间:2014-01-15 13:14:01

标签: php joomla

根据文档,我在后端列表页面中创建了一个过滤器 http://docs.joomla.org/J2.5:How_to_add_custom_filters_to_components

但我遇到了错误  在非对象上调用成员函数get() 用代码

  $this->items            = $this->get('Items');
  $this->pagination       = $this->get('Pagination');
  $this->state            = $this->get('State');

  //Following variables used more than once
  $this->sortColumn       = $this->state->get('list.ordering');
  $this->sortDirection    = $this->state->get('list.direction');
  $this->searchterms      = $this->state->get('filter.search');

在文件视图/ zzz / view.html.php

代码是如何工作的? 谢谢。

1 个答案:

答案 0 :(得分:0)

这样的电话
$this->get('State');

将调用名为

的方法
public function getState() 

在相应的模型中,除非以其他方式实例化,否则它将是models/zzz.php

以下三行尝试加载由modellist中的函数populateState()保存的值(从zzz模型继承),以检索模型中设置的排序和过滤器。但显然$this->state没有设置(上面一行),所以首先测试getState()的输出。

为避免错误,您可以查看是否已设置状态:

if (isset($this->state)) {
$this->sortColumn       = $this->state->get('list.ordering');
etc...

但你应该真正尝试理解为什么不通过调试代码来设置它。