Estou montando o exemplo da documentação do CodeIgniter 4, porém está dando um erro que não estou entendendo:
Call to a member function getNews() on null
Para deixar claro o que estou codando, meu controller está assim:
<?php
namespace App\Controllers;
use App\Models\NewsModel;
use CodeIgniter\Exceptions\PageNotFoundException;
use CodeIgniter\Controller;
class News extends Controller
{
public function index()
{
$model = model(NewsModel::class);
$data = [
'news' => $model->getNews(), // Esta linha que está dando erro
'title' => 'News archive',
];
return view('templates/header', $data)
. view('news/view')
. view('templates/footer');
}
public function view($slug)
{
$model = model(NewsModel::class);
$data['news'] = $model->getNews($slug);
if (empty($data['news'])) {
throw new PageNotFoundException('Cannot find the news item: '. $slug);
}
$data['title'] = $data['news']['title'];
return view('templates/header', $data)
. view('news/view')
. view('templates/footer');
}
}
E o meu model (que contém o método getNews) está assim:
<?php
namespace App\Models;
use CodeIgniter\Model;
class NewsModel extends Model
{
protected $table = 'news';
public function getNews($slug = false)
{
if ($slug === false) {
return $this->findAll();
}
return $this->asArray()
->where(['slug' => $slug])
->first();
}
}
Por algum motivo ele está dando este erro, mas não sei o que alterar para corrigir, mesmo porque estou fazendo de acordo e direto da documentação.