2012-07-24 26 views
2

我在我的codeigniter設置中設置了一個登錄助手。編輯助手中設置的變量時,在codeigniter模型中間接修改重載屬性

我得到codeigniter實例,調用一個模型,並設置一些變量。

$CI =& get_instance(); 

然後我用$CI->load->vars($data);,使在我所有的模型和視圖中可用的變量。

其中一個變量如下:$data->errors=array();

的想法是,如果在我的模型的錯誤,我可以設置一個錯誤 如if($query->num_rows()!='1'){$this->error[]="This message does not exist !";}

然後在我的控制器,我可以檢查這個變量被填充,如果它顯示錯誤。

但是,這是扔了錯誤

消息:超載財產Mail_model :: $錯誤的間接修改沒有影響

這個錯誤會在我的頭上。我已經對這個錯誤進行了一些研究,但是沒有找到任何關於適用解決方案的解釋。

任何人都可以幫我嗎?

回答

1

您已經加載了$ CI變量作爲參考,以自己 - 與= &

您已經然後通過參考加載的變量 - 因爲你使用$ CI->負載>瓦爾()

不需要將$數據加載到$ CI參考中。

如果你想在模型和控制器之間傳遞消息(比如錯誤消息) - 那麼嘗試使用全局變量可能不是最好的方法。

CodeIgniter的最佳選擇是Flashdata - 這是flashdata存在的確切場景。您可以在CI userguide中閱讀所有相關信息。

+0

如何在這裏使用flashdata?如果出現錯誤,它會設置閃存數據..但是這隻能在下一次服務器請求使用時才使用,因爲它是沒用的..? 控制器調用一個模型,它將錯誤設置爲閃存數據..但沒有進一步的服務器請求,然後訪問此設置值..「 – 2012-07-26 13:26:26

+0

」但這隻能在下一個服務器請求之後使用,使用..?」 - 錯誤 - 直到下一次服務器請求才能使用它。因此,您可以設置flashdata - 然後在 – Laurence 2012-07-26 22:47:12

+0

p。之後立即使用它。我知道這是事實 - 因爲這正是我所做的。 – Laurence 2012-07-26 22:47:47

相關問題