Codeigniter $this->;代码点火器4上的负载不工作
如果与$this->load->view(…一起使用,则会出现错误,但如果使用echo view(。。。 错误是:在null上调用成员函数view()Codeigniter $this->;代码点火器4上的负载不工作,codeigniter,codeigniter-4,Codeigniter,Codeigniter 4,如果与$this->load->view(…一起使用,则会出现错误,但如果使用echo view(。。。 错误是:在null上调用成员函数view() 如果我试图加载一个带有$this->load->model(…直接输出到带有回音视图(“”)的浏览器的模型,我会遇到同样的错误 如果您想获取视图,例如通过ajax发送,请使用返回视图(“”) 这在CI4中是新的,没有更多的$This->load->view(“”) 请注意,如果执行的最后一行是返回视图(“”),它仍然会传递到浏览器 所有这些都适用
如果我试图加载一个带有$this->load->model(…直接输出到带有
回音视图(“”)的浏览器的模型,我会遇到同样的错误
如果您想获取视图,例如通过ajax发送,请使用返回视图(“”)
这在CI4中是新的,没有更多的$This->load->view(“”)
请注意,如果执行的最后一行是返回视图(“”)
,它仍然会传递到浏览器
所有这些都适用于模型和库。现在它更多的是面向对象,而不是有一个超级对象
例如,如果您有一个模型位于App/Models下,则在控制器中或要加载它的位置,在开始时包括名称空间,即使用App\Models\MyModel
,然后在您要使用的方法中创建一个新类,即
$myModel = new MyModel();
如果需要库帮助器的实例,例如模型中的db,请为模型执行以下构造函数:
protected mixed $db;
public function __construct(ConnectionInterface &$db)
{
$this->db = &$db;
}
在基本控制器initController
方法中
$this->db=\Config\Database::connect();
现在,当您从扩展BaseController的控制器创建模型实例时,请传递db实例:
$myModel = new MyModel($this->db);
请注意,CI4中的$this
并不是指超级对象,而是指控制器实例,即在initController
中加载的任何内容都可以在$this
中找到。在CI4中,默认情况下会加载多个帮助程序和库,例如$this->request->getPost(“”)
请阅读文档,尤其是如果您习惯于使用CI3CI 4.x,那么它不是CI 3.x,并且根本不兼容,因为它是一个完整的重写。有很棒的在线文档,请检查