【问题标题】:$this->load does not work on Codeigniter 4 [closed]$this->load 在 Codeigniter 4 上不起作用 [关闭]
【发布时间】:2021-05-26 10:57:50
【问题描述】:

如果我使用 $this->load->view(... 会出错,但如果我使用 echo view(... 错误是:在 null 上调用成员函数 view()

如果我尝试使用 $this->load->model(...

加载模型,我会遇到同样的错误

【问题讨论】:

  • CI 4.x 不是 CI 3.x 并且根本不兼容,因为它是完全重写的。有很棒的在线文档,请查看Views in CI 4.x

标签: codeigniter codeigniter-4


【解决方案1】:

使用echo view('')直接输出到浏览器 如果您想获取视图,例如通过 ajax 发送,请使用 return view('')

这是CI4中的新内容,没有更多$this->load->view('')

请注意,如果执行的最后一行是return view(''),它仍然会传递给浏览器。

所有这些都适用于模型和库。现在它更多的是面向对象而不是拥有一个超级对象。

例如,如果您有一个模型位于 App/Models 下、控制器中或您想要加载它的位置,请在开头包含命名空间,即use App\Models\MyModel,然后在您想要使用的方法中创建一个新类,即

$myModel = new MyModel();

如果您想要一个库助手的实例,例如模型中的数据库,请为您的模型执行此构造函数:

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('')

请阅读文档CI4 Documentation 特别是如果您习惯了 CI3

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多