Pergunta

Eu só comecei a usar CodeIgniter algumas horas atrás, e eu me deparei com alguns problemas. Eu estou tentando chamar uma função, que está atualmente em um admin.php controlador nomeado. Estou tentando acessar este a partir de um ajudante. Como eu poderia fazer isso corretamente? Eu tentei quase tudo, mas nada parece estar funcionando como eu estou recebendo o seguinte erro:

Fatal error: Call to a member function login() on a non-object

Qualquer ajuda sobre esta questão seria muito apreciada

Foi útil?

Solução

Eu concordo com jimyi. Seu ajudante e biblioteca de classes deve ser independente de qualquer controlador específico em um aplicativo. Se você tem um ajudante "título da página", por exemplo, não deve depender de qualquer comportamento particular de seu controlador de administração. E se você quisesse usar o auxiliar de página em outra aplicação que não têm um controlador de administrador? Ou o que se você fizer alterações para o controlador administrador abaixo da estrada, agora você tem que ter certeza essas alterações não quebrar o seu ajudante.

Se a sua função auxiliar precisa de algum bit particular de dados que o controlador administrador tem, você poderia passá-lo como um parâmetro de função do controlador. Desta forma, o helper é uma dependência do controlador em oposição ao controlador sendo uma dependência do ajudante.

Além disso, o que significa mensagem de erro que o que coisa que você está chamando não foi instanciado corretamente. Então você está probaly fazendo algo como:

$this->load();

de dentro do ajudante. No entanto, na ajudante,

$this
é indefinido (daí o erro 'non objeto'). CodeIgniter fornece uma maneira de carregar modelos, bibliotecas e vista a partir do lado de fora de um controlador. Mas, tanto quanto eu sei, ele não permite que você faça isso para os controladores. Isso é bom, porém, pelas razões expostas acima. Tenho que ter cuidado quando você introduz dependências.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top