Celamar 0 Denunciar post Postado Agosto 25, 2010 Olá Pessoal! Tendo a seguinte estrutura: Pessoa Object ( [codigo:private] => 1 [nome:private] => Fulano [codProfissao:private] => 10 [profissao:private] => Profissao Object ( [codProfissao:private] => 10 [descricao:private] => Analista ) ) Como recupero a informação "descricao" da classe Profissao() no meu html? Uma das tentativas foi: {$objPessoa[i]->getProfissao()->getDescricao()} Mas com isso tenho o seguinte erro: syntax error: unrecognized tag: $objPessoa[i]->getProfissao()->getDescricao() Já para {$objPessoa[i]->getNome()} funciona certinho. Obrigada Pelo visto este vai ser um desafio! Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 25, 2010 Poste o código dos métodos que você utiliza. Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Agosto 25, 2010 Poste o código dos métodos que você utiliza. Aí vai: class Pessoa { private $codigo; private $nome; private $objProfissao; //referencia ... sets... function setObjProfissao($obj){ $this->objProfissao = $obj; } gets... function getObjProfissao(){ return $this->objProfissao; } } ################################## class Profissao { private $codigo; private $descricao; sets... function setDescricao($descricao){ $this->descricao = $descricao; } gets... function getDescricao(){ return $this->descricao; } } ################################## teste.php $obj = PessaoDAO::listarTodos(); //aqui faz o sql e preenche os objetos $smarty->assign_by_ref('objPessoa', $obj); $smarty->display(... ################################## teste.html {section name=i loop=$objPessoa} <tr class="textoPadrao"> <td>{$objPessoa[i]->getCodigo()}</td> ... <td>{$objPessoa[i]->getObjProfissao()->getDescricao()}</td> *** NAO FUNCIONA </tr> {/section} Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Agosto 26, 2010 Se você executar, antes do assign_by_ref(): print $obj -> getObjProfissao() -> getDescricao(); Você vê aquilo que esperaria ver no template Smarty? Pode até colocar um exit depois desse print para abortar o processo disparardo pelo display(). Espera-se que você veja um Profissao Object com, por exemplo, [descricao:private] => Analista Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Agosto 26, 2010 Fazendo isso: $obj = TesteDAO::listarTodos(); $smarty->assign_by_ref('obj', $obj); print_r($obj[0]->getObjProfissao()); Tenho: Profissao Object ( [codProfissao:private] => 1 [descricao:private] => Analista ) Em conversa com outro desenvolvedor, sugeriu, não é a forma correta mas funcionou, deixar o atributo $objProfissao como public e acessar assim: {$obj[0]->objProfissao->getDescricao()} Não consigo me conformar que não há uma forma (correta) de fazer. :-/ Se você executar, antes do assign_by_ref(): print $obj -> getObjProfissao() -> getDescricao(); Você vê aquilo que esperaria ver no template Smarty? Pode até colocar um exit depois desse print para abortar o processo disparardo pelo display(). Espera-se que você veja um Profissao Object com, por exemplo, [descricao:private] => Analista Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Agosto 26, 2010 Muito estranho isso. Tem como postar a sua PessoaDAO::listarTodos()? Compartilhar este post Link para o post Compartilhar em outros sites