2012-06-26 5 views
7

Sto imparando la piramide e sembra che stiano cercando di convincere la gente a usare il camaleonte invece del mako, così ho pensato di dare una possibilità al camaleonte. Mi piace così tanto e posso fare cose basilari nel modello come if e for loops ma non sono sicuro di come far apparire i flash dei messaggi.Come può il mio modello camaleonte accettare il messaggio lampeggiante dal framework piramidale?

Nel tutorial piramide lo fanno in un todo list ma nell'esempio wiki non lo fanno. Secondo lo instructions about sessions e come esempio dell'esercitazione todolist ho potuto ottenere la mia app per creare messaggi, ma non sono in grado di riceverli nel mio modello. In poche parole, mi chiedo se camaleonte ha un equivalente di questo codice mako:

% if request.session.peek_flash(): 
    <div id="flash"> 
    <% flash = request.session.pop_flash() %> 
    % for message in flash: 
    ${message}<br> 
    % endfor 
    </div> 
    % endif 
+0

[non esiste tale preferenza] (https://groups.google.com/d/msg/pylons-discuss/enal9DcMiAM/T_b4Zoe1crMJ) – Tshepang

risposta

10

La (non testato) equivalente in Chameleon è:

<div id="flash" tal:condition="request.session.peek_flash()"> 
    <span tal:omit-tag="" 
     tal:repeat="message request.session.pop_flash()"> 
     ${message}<br> 
    </span> 
</div> 

Il tal:omit-tag attribute è facoltativa; elimina il tag <span> dall'output, poiché viene utilizzato solo come tag fittizio per allegare la ripetizione a. Rilasciandolo, l'output del modello Chameleon corrisponderà all'esempio di Mako.

Vedere Chameleon documentation per un'introduzione e le specifiche complete su come funziona la lingua modello.

+0

Se un utente deve ancora accedere al sito, l'accesso di '' richiesta .session'' creerà automaticamente una sessione. Anche se questo potrebbe non essere un problema, significa che se solo pochi utenti avranno sessioni (ad esempio solo amministratori), allora aggiungerai un sovraccarico non necessario al tuo server e ai tuoi clienti che potrebbero/non avranno mai una sessione. Se questo ti riguarda, il mio suggerimento è di controllare '' 'session' in vars (request) '' prima di fare riferimento a '' request.session''. – davidjb