Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

samirbh

[Resolvido] CodeIgniter - estou fazendo confusão

Recommended Posts

Ola pessoal,

 

Estou usando o CI pela primeira vez não tenho bons conhecimento em OO.

 

Estou utilizando conhecimento adquirido no site do imasters mesmo, mas não estou conseguindo

 

ele aponta um erro falando que a função mostrar não existe.

 

tenho uma tabela no banco chamada Perfil com as respectivas colunas:

Id_Perfil, Nome, Nivel, Descricao, Dtacadastro, DtaAlteracao, Status

 

conteudo do arquivo perfil_view.php

(perfil)
<p><a href="<?php echo base_url();?>index.php/perfil/>">Cadastrar Perfil</p>
(/perfil)

conteudo do arquivo perfil_model.php

<?php
class perfil_model extends Model {

    private $vet_dados = array();

    public function __construct() {
        parent::Model();
    }
    
    public function mostrar() {

        $this->vet_dados["perfil"] = $this->getPerfil();

        return $this->parser->parse("perfil/perfil_view", $this->vet_dados, TRUE);
    }
    
    public function getPerfil($id=null) {
        
        $this->db->from("perfil");

        if ($id != null) {
            $this->db->where("Id_Perfil", $id);
            return $this->db->get()->row();
        } else {
            return $this->db->get()->result();
        }

    }
}
?>

conteudo do arquivo (controller) perfil.php

<?php
class Perfil extends Controller {

    private $vet_dados = array();

    public function perfil() {
        parent::Controller();//chama construtor da classe pai
    }

    public function index() {

        $this->vet_dados["topo"]     = $this->parser->parse("topo_view", $this->vet_dados, TRUE);
        $this->vet_dados["menu"]     = $this->parser->parse("menu_view", $this->vet_dados, TRUE);
        $this->vet_dados["conteudo"] = $this->perfil_model->mostrar();
        $this->vet_dados["rodape"]   = $this->parser->parse("rodape_view", $this->vet_dados, TRUE);

        $this->parser->parse("template_view",$this->vet_dados);

    }
}
?>

 

onde estou errando?

 

 

erro:

 

A PHP Error was encountered

 

Severity: Notice

 

Message: Undefined property: Perfil::$perfil_model

 

Filename: controllers/perfil.php

 

Line Number: 14

 

 

Fatal error: Call to a member function mostrar() on a non-object in C:\wamp\www\BHBALADAS\AD\system\application\controllers\perfil.php on line 14

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro foi gerado porque eu não agreguei o model para as configurações do CodeIgniter, segue abaixo a solução do problema e uma boa lembrança de fazer isso sempre que criar um model:

 

no arquivo system/application/config/autoload.php acrescente ao objeto mais um parametro que é o model no qual você quer que seja lido pelo CodeIgniter.

 

$autoload['model'] = array('home', 'perfil_model');
/*observem que o modelo perfil_model não faz parte da minha interface inicial do sistema, a flexibilidade do CI é muito boa*/

Agora uma pergunta de boas praticas:

 

se é que existe algum recurso que evite eu encher a $autoload de models (creio que não tenha nada a ver) por exemplo algum segundo plano como um sistema de locadora e outro de lanchonete rodando no mesmo escopo ou seja os dois usando um único framework poderia ocasionar isso.

 

e se tem um limite de models na $autoload?

 

valeu pessoal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.