我在我的codeigniter设置中设置了一个登录帮助器。
我得到了codeigniter实例,调用了一个模型,并设置了一些变量。
$CI =& get_instance();
然后,我使用
$CI->load->vars($data);
使变量在所有模型和 View 中都可用。变量之一如下
$data->errors=array();
这个想法是,如果我的模型中有错误,我可以设置一个错误
例如
if($query->num_rows()!='1'){$this->error[]="This message does not exist !";}
然后在我的 Controller 中,我可以检查此变量是否已填充以及是否显示错误。
但是,这引发了错误
Message: Indirect modification of overloaded property Mail_model::$error has no effect
这个错误已经过去了。我已经对该错误进行了一些研究,但找不到适用解决方案的雷曼术语解释。
有人可以帮我吗?
最佳答案
您已加载$ CI变量作为对自身的引用-使用=&
然后,您已经通过引用加载了变量-因为您使用了$ CI-> load-> vars()
无需将$ data加载到$ CI引用中。
如果要在模型和 Controller 之间传递消息(例如错误消息),则尝试使用全局变量可能不是最佳方法。
CodeIgniter的最佳选择是Flashdata-这就是存在flashdata的确切情况。您可以在CI userguide中阅读所有内容。
关于codeigniter - 编辑助手中设置的变量时,间接修改Codeigniter模型中的重载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639435/