$this->load 不适用于 Codeigniter 4
$this->load does not work on Codeigniter 4
如果我使用 $this->load->view(... 我会出错,但如果我使用 echo view(...
错误是:在 null
上调用成员函数 view()
如果我尝试使用 $this->load->model(...
加载模型,我会遇到同样的错误
使用echo view('')
直接输出到浏览器
如果你想获得一个视图,例如通过 ajax 发送,请使用 return view('')
这是CI4的新增内容,没有了$this->load->view('')
请注意,如果执行的最后一行是 return view('')
,它仍然会传递给浏览器。
所有这些都适用于模型和库。现在它更面向对象而不是拥有超级对象。
例如,如果您有一个位于 App/Models 下的模型,在控制器中或您想要加载它的地方包括名称空间,即 use App\Models\MyModel
在开头,然后在您要使用的方法中只需创建一个新的 class 即
$myModel = new MyModel();
如果您想要库助手的实例,例如您模型中的数据库,请为您的模型执行此构造函数:
protected mixed $db;
public function __construct(ConnectionInterface &$db)
{
$this->db = &$db;
}
在基础控制器initController
方法中put
$this->db = \Config\Database::connect();
现在,当您从扩展 BaseController 的控制器创建模型实例时,传递数据库实例:
$myModel = new MyModel($this->db);
请注意,CI4 中的 $this
不是指超级对象,而是指控制器实例,即您在 initController
中加载的任何内容都可以在 $this
中找到。 CI4 现在默认加载了几个助手和库,例如 $this->request->getPost('')
请阅读文档CI4 Documentation,尤其是如果您习惯了 CI3
如果我使用 $this->load->view(... 我会出错,但如果我使用 echo view(... 错误是:在 null
上调用成员函数 view()如果我尝试使用 $this->load->model(...
加载模型,我会遇到同样的错误使用echo view('')
直接输出到浏览器
如果你想获得一个视图,例如通过 ajax 发送,请使用 return view('')
这是CI4的新增内容,没有了$this->load->view('')
请注意,如果执行的最后一行是 return view('')
,它仍然会传递给浏览器。
所有这些都适用于模型和库。现在它更面向对象而不是拥有超级对象。
例如,如果您有一个位于 App/Models 下的模型,在控制器中或您想要加载它的地方包括名称空间,即 use App\Models\MyModel
在开头,然后在您要使用的方法中只需创建一个新的 class 即
$myModel = new MyModel();
如果您想要库助手的实例,例如您模型中的数据库,请为您的模型执行此构造函数:
protected mixed $db;
public function __construct(ConnectionInterface &$db)
{
$this->db = &$db;
}
在基础控制器initController
方法中put
$this->db = \Config\Database::connect();
现在,当您从扩展 BaseController 的控制器创建模型实例时,传递数据库实例:
$myModel = new MyModel($this->db);
请注意,CI4 中的 $this
不是指超级对象,而是指控制器实例,即您在 initController
中加载的任何内容都可以在 $this
中找到。 CI4 现在默认加载了几个助手和库,例如 $this->request->getPost('')
请阅读文档CI4 Documentation,尤其是如果您习惯了 CI3