Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TemplateView Básico não está dando loop No livro do Adianti Framework no capítulo 4.9.2 (Template view básico), roda tudo, menos a parte do loop pra exibir os contatos... eu já revisei o código aqui e não achei o problema... podem me ajudar ? TEMPLATE(customer.html) Customer data ...
WG
TemplateView Básico não está dando loop  
Fechado
No livro do Adianti Framework no capítulo 4.9.2 (Template view básico), roda tudo, menos a parte do loop pra exibir os contatos... eu já revisei o código aqui e não achei o problema... podem me ajudar ?

TEMPLATE(customer.html)
<!--[main]--> <table class="customform" style="border: 1px solid #b7b7b7"> <tr> <td colspan="2" class="formtitle">Customer data</td> </tr> <tr> <td width="20%">Name</td> <td width="80%"><span class="formfield">{$name}</span></td> </tr> <tr> <td>Address</td> <td><span class="formfield">{$address}</span></td> </tr> <tr> <td colspan="2" align="center"> <a generator="adianti" href="index.php?class=CustomerFormView&method=onEdit&key=$code}"> Click here to edit the customer </a> <td> </tr> <!--[contacts]--> <tr> <td class="sectiontitle" colspan="2">Contacts</td> </tr> <tr bgcolor="#e0e0e0"> <td>Type</td> <td>Value</td> </tr> <!--[contacts-detail]--> <tr> <td>{$type}</td> <td>{$value}</td> </tr> <!--[/contacts-detail--> <!--[/contacts]--> </table> <!--[/main]-->


classe TemplateViewBasicView
  1. <?php
  2. class TemplateViewBasicView extends TPage
  3. {
  4.     function __construct()
  5.     {
  6.         parent::__construct();
  7.         // carrega os estilos
  8.         TPage::include_css('app/resources/styles.css');
  9.         // carrega o template
  10.         $this->html = new THtmlRenderer('app/resources/customer.html');
  11.         try
  12.         {
  13.             // carrega o cliente 1
  14.             TTransaction::open('sample');
  15.                 $customer = new Customer(1);
  16.                 // define as substituições para a seção main
  17.                 $replace = array();
  18.                 $replace['code']        = $customer->id;
  19.                 $replace['name']        = $customer->name;
  20.                 $replace['address']    = $customer->address;
  21.                 // habilita a seção main com as substiuições
  22.                 $this->html->enableSection('main'$replace);
  23.                 // define as substituições baseado nos contatos
  24.                 $replace = array();
  25.                 foreach($customer->getContacts() as $contact)
  26.                 {
  27.                     $replace[] = array('type' => $contact->type'value' => $contact->value);
  28.                 }
  29.                 // habilita as seções conteacts e contacts-detail (repetitiva)
  30.                 // porém como podem ver na imagem em anexo, não mostra nada
  31.                 // e esse customer específico tem pelo menos 2 contatos cadastrados...
  32.                 $this->html->enableSection('contacts');
  33.                 $this->html->enableSection('contacts-detail'$replaceTRUE);
  34.                 parent::add($this->html);
  35.             TTransaction::close();
  36.         }
  37.         catch(Exception $e)
  38.         {
  39.             new TMessage('error'$e->getMessage());
  40.         }
  41.     }
  42. }
  43. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (7)


FC

Existes os registro no banco ?
troque essa parte
// define as substituições baseado nos contatos
$replace = array();
foreach($customer->getContacts() as $contact)
{
$replace[] = array('type' => $contact->type, 'value' => $contact->value);
}

por essa.

$replace = array();
$replace[] = array('type' => 'teste', 'value' => '1');
$replace[] = array('type' => 'teste', 'value' => '1');
WG

Sim existem no banco... e eu troquei pelo código com o array e continua com o mesmo problema...
FC

Calma ae vc ta carregando o registro 1 somente terá 1 registro pq loop?

outra coisa existe o registro id 1?
FC

o loop é dos contatos existe mais de 1 contato para o cliente?

também esta faltando uma tag de uma olhada.
WG

Sim, o loop é para os contatos... inclusive na própria abertura do tópico eu comentei que esse Customer em específico possui 2 contatos, porem nenhum está sendo mostrado...

Antes do loop eu dei um print_$($customer->getContatcs()) e mostra claramente que tem 2 objetos na coleção retornada... porém não mostra nada!
PD

Wemerson,

Executei sei código PHP com o meu HTML e deu certo. Isso quer dizer que o erro está no HTML.

Sugestão: Compare o HTML que você digitou com o que vem com o livro e vai encontrar o problema ;-)

Verá que onde está:
<!--[/contacts-detail-->

Deveria ser:
<!--[contacts-detail]-->

Veja que um simples fechamento de chaves, já impediu o fechamento da seção ;-)

Atenciosamente,
Pablo
WG

agora eu entendi... melindroso!!!!

na verdade o erro não era na barra.. era no fechamento da tag..., Estava <!--[/contacts-detail--> porém o correto é <!--[/contacts-detail]-->... faltou uma simples ] no final.