Search code examples
phpcodeigniterviewcontrollercodeigniter-4

Undefined database variable


Blog.php code below:

    <?php namespace App\Controllers;
    
    use App\Models\BlogModel;
    
    class Blog extends BaseController
    {
        public function index()
        {
            $model = new BlogModel();
    
            //echo "<pre>";
    
            //print_r($model);
    
            $dados = [
                'posts' => $model->get()->paginate(5),
                'pager' => $model->pager
            ];
            return view('posts/blog_index', $dados);
        }

blog_index.php code below:

    <?= $this->extend('layouts/main') ?>
    
    <?= $this->section('content') ?> 
 

    <?= $this->include('/components/busca_blog', $dados['posts'] ) ?>   
    <?= $this->include('/components/posts_recentes', $dados['posts'] ) ?>   
    <?= $this->include('/components/categorias', $categorias) ?>   
    <?= $this->include('/components/arquivo', $dados['posts'] ) ?>

I can't see where is my mistake, it raises a errorException: "Undefined Variable:dados". About $categorias variable, am learning how to use more than one table per controller.

Codeigniter version: 4.0.4 Running through xampp


Solution

  • Controller Blog.php

    class Blog extends BaseController
    {
        public function index()
        {
            $model = new BlogModel();
    
            $dados = [
                'posts' => $model->get()->paginate(5),
                'pager' => $model->pager
            ];
            return view('posts/blog_index', $dados);
        }
    }
    

    View blog_index.php

    <?= $this->include('/components/posts_recentes', $posts) ?> 
    
        if(!empty($posts))
        {
            print_r($posts);
        }
    

    Note :- For Reference see this:-

    https://codeigniter4.github.io/userguide/outgoing/views.html#adding-dynamic-data-to-the-view