2013-07-02 98 views
0

我在我的控制器中的任務,我從一個URL調用視圖,就像這樣:鏈接重置狀態變量

echo JRoute::_('index.php?option=com_mycomponent&task=myComponent.myFunction'); 

任務獲取模型和操作模型的一個方法,它應該根據從視圖POST中的表單設置的狀態變量返回一個對象列表。看起來當我點擊錨點並且任務被加載時 - 狀態消失。

有誰能告訴我爲什麼?

非常感謝!

回答

1

由於這是一個新的請求,您的發佈數據不再可用。

如果您希望跨通話保留信息,您需要將信息存儲在會話(setUserState)或其他地方(db?)。

setUserState是的Joomla的一個方便的功能,以信息的(小)件存儲到會話中的一個簡單的方法:http://docs.joomla.org/How_to_use_user_state_variables

+0

非常感謝,我開始使用setUserState,而不是僅僅的setState,現在所有的工作 - 只是有改變所有的過濾器,讓他們現在使用setUserState!那麼setState和setUserState有什麼區別?爲什麼setState甚至存在,我很困惑?所以在我的populateState任務中,以及使用'$ this-> setState()'我要包含'$ app-> setUserState()'?有些東西似乎有點不整潔? – mousebat

+0

通常您會使用JModel-> setState來設置模型的一些參數,即列表排序或過濾選項,而setUserState用於在後續調用中保留用戶數據。我想你會設置模型狀態與userState變量在task = myComponent.myFunction中保持一致性,但這取決於你的業務邏輯 –