2012-06-26 5 views
7

Uczę się piramidy i wygląda na to, że próbują nakłonić ludzi do używania kameleona zamiast mako, więc pomyślałem, że dam kameleonowi szansę. Podoba mi się to do tej pory i mogę robić podstawowe rzeczy w szablonie, na przykład jeśli i dla pętli, ale nie jestem pewien, jak wyświetlić komunikaty flash.W jaki sposób szablon kameleona może odbierać miganie wiadomości z frameworka?

W samouczku o piramidzie robią to w todo list, ale w przykładzie wiki nie. Według instructions about sessions i korzystając z samouczka todolist jako przykładu, udało mi się przekonać moją aplikację do tworzenia wiadomości, ale nie mogę ich odebrać w moim szablonie. W skrócie, zastanawiam się, czy kameleon ma odpowiednika tego kodu mako:

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

[nie ma takich preferencji] (https://groups.google.com/d/msg/pylons-discuss/enal9DcMiAM/T_b4Zoe1crMJ) – Tshepang

Odpowiedz

10

The (niesprawdzone) równowartość w kameleona:

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

tal:omit-tag attribute jest opcjonalny; znika z niego znacznik <span>, ponieważ jest używany tylko jako fałszywy znacznik do dołączenia powtórzenia. Upuszczając go, wynik szablonu Chameleona będzie zgodny z przykładem Mako.

Zapoznaj się z Chameleon documentation, aby uzyskać wprowadzenie i pełną specyfikację działania języka szablonów.

+0

Jeśli użytkownik jest jeszcze, aby uzyskać dostęp do witryny, dostęp '' zamówienie .session'' automatycznie utworzy sesję. Chociaż może to nie być problemem, oznacza to, że jeśli tylko kilku użytkowników będzie miało sesje (np. Tylko administratorzy), dodasz niepotrzebne obciążenie do serwera i klientów, którzy mogą/nigdy nie będą mieć sesji. Jeśli chodzi o ciebie, moją propozycją jest sprawdzenie '' 'sesji' w vars (request) '' przed odniesieniem '' request.session'' w ogóle. – davidjb

Powiązane problemy