1
resposta

MY_Loader Dúvidas

Boa tarde,

gostaria de implementar um menu mais sofisticado com o CI, mas queria que a MY_Loader conectasse com uma model para retornar os dados do menu (ficarão relacionados no banco de dados) e adicionasse na variavel $dados do cabecalho.php: "$this->view("cabecalho.php", $dados);".

mas ao tentar chamar a model pela classe MY_Loader, ele apresenta erro no método load:

Message: Undefined property: MY_Loader::$load

Caso não seja possível pela MY_loader, onde eu poderia colocar para que pudesse ser chamado sempre em qqr controler (pois é necessário chamar sempre esse componente que cria o menu) e gostaria de deixar em um só local, para não ter repetição de código.

1 resposta

Olá, Thomas! Tudo bem com você?

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

Para implementar um menu mais sofisticado no CodeIgniter e conectar com uma model para retornar os dados do menu, podemos fazer o seguinte:

  1. Nos certificar de que estamos carregando a biblioteca Loader no nosso controlador. Por exemplo:
$this->load->library('loader');
  1. Em seguida, podemos chamar a model dentro do seu controlador usando o método $this->load->model(). Por exemplo:
$this->load->model('nome_da_model');

Devemos nos certificar de substituir 'nome_da_model' pelo nome real da nossa model.

  1. Agora podemos chamar o método da model que retorna os dados do menu. Por exemplo:
$dados['menu'] = $this->nome_da_model->obter_menu();

Devemos nos certificar de substituir 'obter_menu()' pelo nome real do método da nossa model que retorna os dados do menu.

  1. Por fim, podemos passar os dados do menu para a view usando o método $this->load->view(). Por exemplo:
$this->load->view('cabecalho', $dados);

Devemos nos certificar de substituir 'cabecalho' pelo nome real da nossa view.

Caso o erro "Undefined property: MY_Loader::$load" persista, pode ser necessário verificar se a biblioteca Loader está sendo carregada corretamente e se está sendo usado a sintaxe correta para chamar a model.

Caso não seja possível utilizar a MY_Loader, podemos criar um controlador base que todos os outros controladores herdem. Nesse controlador base, podemos colocar o código responsável por carregar a model e passar os dados do menu para a view. Dessa forma, eviamos repetição de código em todos os controladores.

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 o material abaixo:

Espero ter ajudado.

Abraços e bons estudos!