【问题标题】:Controller does not send data to view, arrives as null控制器不向视图发送数据,以 null 形式到达
【发布时间】:2021-12-06 01:27:34
【问题描述】:

我一直在尝试从控制器发送数据以在 CodeIgniter 4 中查看,让我...

型号:

class KomikModel extends Model
{
    protected $table = 'komik';
    protected $useTimestamps = true;
    protected $allowedFields = ['judul', 'slug', 'penulis', 'penerbit', 'sampul'];

    public function getKomik($slug = false)
    {
        if ($slug == false) {
            return $this->findAll();
        }

        return $this->where(['slug' => $slug])->first();
    }
}

控制器:

    public function edit($slug)
    {
        $data = [
            'title' => 'Form Ubah Data',
            'validation' => \Config\Services::validation(),
            'komik' => $this->komikModel->getKomik($slug)
        ];

        return view('komik/edit', $data);
    }

查看:

<?= dd($komik); ?>

毕竟,到达视图的 $komik 显示为 null。为什么,我做错了什么?提前致谢。

PS:不知何故,它适用于其他方法。目前有 3 种其他方法使用模型将数据从控制器发送到视图。但只有在这种编辑方法下才会出现问题。

【问题讨论】:

    标签: php codeigniter-4


    【解决方案1】:

    问题出在这一行。

     return $this->where(['slug' => $slug])->first();
    

    模型类中没有定义任何“where”方法。它从 Builder 类中借用它。这称为对象组合。您当然可以尝试使用与 Model 类中类似的实现来使用自己的方法,但我建议您不要这样做,因为它是一种反模式。

    更好的方法是让一个类负责所有查询或过滤,就像在存储库模式中一样。您可以对此进行一些研究。

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多