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)
classe TemplateViewBasicView
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
- <?php
- class TemplateViewBasicView extends TPage
- {
- function __construct()
- {
- parent::__construct();
- // carrega os estilos
- TPage::include_css('app/resources/styles.css');
- // carrega o template
- $this->html = new THtmlRenderer('app/resources/customer.html');
- try
- {
- // carrega o cliente 1
- TTransaction::open('sample');
- $customer = new Customer(1);
- // define as substituições para a seção main
- $replace = array();
- $replace['code'] = $customer->id;
- $replace['name'] = $customer->name;
- $replace['address'] = $customer->address;
- // habilita a seção main com as substiuições
- $this->html->enableSection('main', $replace);
- // define as substituições baseado nos contatos
- $replace = array();
- foreach($customer->getContacts() as $contact)
- {
- $replace[] = array('type' => $contact->type, 'value' => $contact->value);
- }
- // habilita as seções conteacts e contacts-detail (repetitiva)
- // porém como podem ver na imagem em anexo, não mostra nada
- // e esse customer específico tem pelo menos 2 contatos cadastrados...
- $this->html->enableSection('contacts');
- $this->html->enableSection('contacts-detail', $replace, TRUE);
- parent::add($this->html);
- TTransaction::close();
- }
- catch(Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- }
- ?>
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');
Sim existem no banco... e eu troquei pelo código com o array e continua com o mesmo problema...
Calma ae vc ta carregando o registro 1 somente terá 1 registro pq loop?
outra coisa existe o registro id 1?
o loop é dos contatos existe mais de 1 contato para o cliente?
também esta faltando uma tag de uma olhada.
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!
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
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.