2014-03-24 81 views
0

有沒有一種方法可以在保存Joomla保存方法後顯示更改後的值? 例如,當我編輯「maxuser」字段並保存時,我想顯示舊值和新值。 我試圖通過比較「getVar」和「$ post」,但兩個值是相同的。Joomla 2.5方法保存()

function save() 
{ 

... 

$maxuser1 = JRequest::getVar('maxuser'); 
$maxuser2 = $post['maxuser']; 

... 
if($maxuser1 != $maxuser2) { 
    $msg = "Not the same ..."; 
} 

... 

} 

回答

1

最好覆蓋JTable,而不是模型。繼承人的示例代碼:

public function store($updateNulls = false) { 
    $oldTable = JTable::getInstance(TABLE_NAME, INSTANCE_NAME); 
    $messages = array(); 
    if ($oldTable->load($this->id)) {   
    // Now you can compare any values where $oldTable->param is old, and $this->param is new 
    // For example 
    if ($oldTable->title != $this->title) { 
     $messages[] = "Title has changed"; 
    } 
    } 

    $result = parent::store($updateNulls); 

    if ((count($messages) > 0) && ($result === true)){ 
    $message = implode("\n", $messages); 
    return $message; 
    } else { 
    return $result; 
    }  
} 

這將返回的消息字符串,如果有的話,true如果沒有消息,然後保存成功,false如果保存失敗。因此,您只需檢查模型中的返回值並設置正確的重定向消息即可。

0

在控制器中,您可以使用postSaveHook讓您訪問驗證的值。

+0

但postSave你沒有值,這是之前保存。還是我錯了? – di3sel

+0

感謝您的幫助,但我找到了一個更簡單的解決方案。我在表單中添加了一個隱藏字段,所以現在我可以比較JRequest :: getVar('maxuserold')和$ post ['maxuser']。 – shadylane

+0

@ i3sel當然,你有舊的價值觀,這就是OP所說的,他有舊的,他需要新的比較。 shadylane使用JInput而不是JRequest; JRequest已棄用。 – Elin