Agora que já implementamos a listagem de posts no blog com paginação, o próximo passo é permitir que cada post possa ser acessado individualmente por meio de uma URL específica. Para isso, vamos criar a funcionalidade de exibição de postagens individuais no CodeIgniter 4.
Definindo a Rota para os Posts
Para acessar um post individualmente, precisamos definir uma rota dinâmica que capture o ID do post na URL. No arquivo app/Config/Routes.php, adicione:
Essa rota permite acessar um post por meio de um URL no formato /blog/post/1, onde o número representa o ID do post.
Atualizando o Controller do Blog
No app/Controllers/BlogController.php, adicione o método exibir() para buscar o post no banco de dados e carregá-lo na view:
namespace App\Controllers;
use App\Models\PostModel;
use CodeIgniter\Controller;
class BlogController extends Controller
{
public function exibir($id)
{
$model = new PostModel();
$data['post'] = $model->find($id);
if (!$data['post']) {
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
return view('blog/post', $data);
}
}
Se o post não for encontrado, será exibida a página de erro 404.
Criando a View do Post
Agora, precisamos de uma view para exibir o conteúdo completo do post. No diretório app/Views/blog/, crie o arquivo post.php:
<h1><?= esc($post['titulo']) ?></h1>
<p>Publicado por <?= esc($post['autor']) ?> em <?= date('d/m/Y H:i', strtotime($post['created_at'])) ?></p>
<hr>
<p><?= nl2br(esc($post['conteudo'])) ?></p>
<p><a href="<?= site_url('blog') ?>">Voltar para o blog</a></p>
Nessa view, o título, o autor e a data de publicação do post são exibidos junto com o conteúdo completo.
Conclusão
Com essa implementação, agora cada post pode ser acessado individualmente por meio de uma URL específica, proporcionando uma experiência mais completa aos visitantes do blog. No próximo post, abordaremos a implementação do formulário de contato para interação com os usuários.
Se você ou sua empresa precisa de suporte para desenvolvimento com CodeIgniter 4, a Saldaris Consultoria pode ajudar. Entre em contato pelo formulário no final da página para saber mais sobre nossos serviços.