1
resposta

Usando MY_Loader pra criação de um template dando fatal error

Bom dia! Finalizei o curso CI I e II porém me deparei com uma dificuldade que ainda não consegui resolver. Fiz a criação da classe "MY_Loader.php" com o seguinte código:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Loader extends CI_Loader{

 public function template($nome, $dados = array()) {
          $this->view("cabecalho.php");
          $this->view($nome, $dados);
          $this->view("rodape.php");
      }
}
 ?>

E o único controller que chama o template é o de produtos.

  public function index(){
        // $this->output->enable_profiler(TRUE);
        $this->load->model("produtos_model");
        $produtos = $this->produtos_model->buscaTodos();

        $dados = array("produtos" => $produtos);
        $this->load->helper(array("currency"));

        $this->load->template("produtos/index.php", $dados);


    }

Ao tentar acessar a index do controller, retorna o erro:

Fatal error: Call to undefined method CI_Loader::template()

Conseguem identificar o motivo do erro?

1 resposta

Olá, Rodrigo, tudo bem?

Peço desculpas pela demora no retorno a sua mensagem.

Uma possível causa desse erro é que o CodeIgniter não está carregando corretamente a sua classe MY_Loader. Uma solução para o cenário que você apresentou é, certificar que você colocou o arquivo MY_Loader.php na pasta correta dentro do diretório application/core. Além disso, verifique se você está chamando corretamente o método template() no seu controller de produtos.

Outra coisa que você pode tentar fazer é verificar se a classe MY_Loader está sendo carregada corretamente no arquivo application/config/autoload.php. Certifique-se de que você adicionou a classe na configuração $autoload['core'] da seguinte maneira:

$autoload['core'] = array('MY_Loader');

Após fazer essas verificações, teste novamente e veja se o erro persiste. Se ainda estiver enfrentando problemas, pode ser útil verificar se não há nenhum erro de digitação ou sintaxe no código que você compartilhou.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida. Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo a formação abaixo:

Espero ter ajudado.

Abraços e bons estudos!