2014-01-15 55 views
0

我創造了後端房源頁面過濾器自定義過濾器,根據文檔 http://docs.joomla.org/J2.5:How_to_add_custom_filters_to_components內建的Joomla後端

,但我遇到的錯誤 調用一個成員函數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

如何代碼工作? 謝謝。

回答

0

$this->get('State'); 

的通話將調用名爲

public function getState() 
在corrensponding模型

的方法,除非它另有實例這將是models/zzz.php

以下三行嘗試加載由modellist中的函數populateState()保存的值(您的zzz模型從中繼承)以檢索排序d過濾器在模型中設置。但顯然$this->state沒有設置(上面的行),所以首先測試getState()的輸出。

要避免錯誤,你可以看到,如果狀態設置:

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

,但你確實應該嘗試理解爲什麼它不是由調試代碼設置。