samirbh 0 Denunciar post Postado Janeiro 31, 2010 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
samirbh 0 Denunciar post Postado Fevereiro 1, 2010 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
lucaswxp 22 Denunciar post Postado Fevereiro 1, 2010 Que eu saibia (nao mecho muito com CI) não existe limite em $autoload. Você pode carregar um model fazendo algo como isso também: $this->load->model('Post_model'); Edit: Para saber mais: http://www.codeignitor.com/user_guide/libraries/loader.html Compartilhar este post Link para o post Compartilhar em outros sites