Bem-vindo ao mundo dos page templates com seus escopos restritos às tags onde as variáveis são definidas.  :-)  Para entender o que está acontecendo, coloque o seguinte texto antes de <p tal:content="dados/nome" />:

Tipo: <p tal:content="tipo" />

Você verá que, tão logo fecha o span que redefine a variável tipo, ela é mandada para o espaço.

Minha sugestão: utilize um script python para reestruturar os resultados do seu zsql, passando de uma forma de registros para outra de uma lista de listas com dicionários.  Assim, o que antes era:

tipo|nome|endereco
A|Jose|[EMAIL PROTECTED]
A|Mario|[EMAIL PROTECTED]
B|Fabio|[EMAIL PROTECTED]
B|Chico|[EMAIL PROTECTED]
C|Andre|[EMAIL PROTECTED]

ficaria assim:

[['A',{'nome':'Jose',' endereco':'[EMAIL PROTECTED]'},{'nome':'Mario','endereco':'[EMAIL PROTECTED]'}],
 ['B',{'nome':'Fabio','endereco':'[EMAIL PROTECTED] '},{'nome':'Chico','endereco':'[EMAIL PROTECTED]'}],
 ['C',{'nome':'Andre','endereco':'[EMAIL PROTECTED]'}]]

E seu page template ficaria assim:

<span tal:repeat="dados container/sql/GetDados">
    <span tal:repeat="item dados">
        <span tal:condition="repeat/item/start">  <!--  Executa apenas para o primeiro item da lista -->
            <p tal:content="item" />
        </span>
        <span tal:condition="not: repeat/item/start"> <!--  Executa apenas para os demais -->
            <p tal:content="item/nome" />
        </span>
    </span>
</span>

Não há como evitar totalmente a introdução de alguma lógica em um ZPT (eu pelo menos não consegui ainda), mas o ideal é utilizar o mínimo possível, para não tornar suas páginas difíceis de ler.

Zénrique.

Em 24/02/06, alexpiaz <[EMAIL PROTECTED]> escreveu:
Pessoal,

Tenho uma tabela que retorna os seguintes dados:

tipo|nome|endereco
A|Jose|[EMAIL PROTECTED]
A|Mario|[EMAIL PROTECTED]
B|Fabio|[EMAIL PROTECTED]
B|Chico|[EMAIL PROTECTED]
C|Andre|[EMAIL PROTECTED]

Eu preciso exibir os dados assim em uma page template:

A
Jose
Mario
B
Fabio
Chico
C
Andre

Eu sei a logica de fazer, o pseudo codigo seria assim (exemplo em python)

letra = ''

for linha in tabela:
    if linha.tipo != letra:
        letra = linha.tipo
        print letra
    print nome
    print email

Bom, eu preciso transpor isso pra ZPT, tentei fazendo assim:

<span tal:define="tipo python:''">
<span tal:repeat="dados container/sql/GetDados">
    <span tal:condition="python:tipo != dados.tipo">
        <span tal:define="tipo dados/tipo">
          <p tal:content="tipo" />
        </span>
        <p tal:content="dados/nome" />
    </span>

Só que não funciona!!!

Ele fica repetindo pra cada linha o tipo...EU sou cru em zpt, talvez
tenha alguma outro macete.

Alguem se habilita a dar uma dica??

[]'s a todos e bom carnaval!!!

Alex






Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED]
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
     [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html







Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a