Seite 1 von 1

problem mit condition...

Verfasst: Dienstag 1. August 2006, 09:54
von mitch
Hi leute, ich bin ein neuling im Bereich mit Plone(Zope) und Python und arbeite gerade das Plonebuch durch.
Da bin ich bei den Tamplates auf die conditions gestoßen und da heißt es z.B.

Code: Alles auswählen

 
<p tal:condition="request/message">
    Es gibt eine Message
</p>
<p tal:condition="not: request/message">
    Keine Message
</p>
aber wenn ich das im Plone so testen will, kommt als Fehler immer "Fehlerhafterwert: 'message'"
Es ist doch so, dass beim ersten der Text angezeigt werden sollte und beim 2. nicht oder?
Was mache ich Falsch?
Hier mal der ganze Quellcode:

Code: Alles auswählen

 
<html>
  <head>
    <title tal:content="template/title">The title</title>
  </head>
  <body>
    
<p tal:condition="request/message">
    Es gibt eine Message
</p>
<p tal:condition="not: request/message">
    Keine Message
</p>

    
</body>
</html>
[/quote]

Verfasst: Dienstag 1. August 2006, 11:47
von mitch
ich habs jetzt einfach mal so gelöst aber na ja ich glaube nicht, dass das der richtige Weg ist!

Code: Alles auswählen

<html>
  <head>
    <title tal:content="template/title">The title</title>
  </head>
  <body>
    
<p tal:condition="string:message">
    Es gibt eine Message
</p>
<p tal:condition="not: string:message">
    Keine Message
</p>

    
</body>
</html>
Oh man und noch das gleiche mit content:

Code: Alles auswählen

<html>
  <head>
    <title tal:content="template/title">The title</title>
  </head>
  <body>

    <i tal:content="here/title_or_id">Ein Titel</i>
    
</body>
</html>
Ich befinde mich im custom Ordner (Container) also ist die title_or_id ja logischer weiße "Custom" aber mit der content Anweisung sollte ich ja dies überschreiben können und es müsste "Ein Titel" da stehen oder? Dem ist aber nicht so!
Kann mir einer sagen woran das liegt? muss ich noch irgendwas in Zope einstellen?

mfg mitch[/quote]

Re: problem mit condition...

Verfasst: Dienstag 1. August 2006, 16:27
von gerold
mitch hat geschrieben:Da bin ich bei den Tamplates auf die conditions gestoßen und da heißt es z.B.

Code: Alles auswählen

<p tal:condition="request/message">
    Es gibt eine Message
</p>
<p tal:condition="not: request/message">
    Keine Message
</p>
Hi mitch!

``request/message`` **erwartet**, dass ``message`` existiert. Deshalb gibt es auch einen Fehler aus, wenn ``message`` nicht übergeben wurde.

Rufe deine Testseite mal so auf:

Code: Alles auswählen

http://localhost:8080/pfad_zur_testseite?message=Hallo
Damit enthält ``message`` etwas und du bekommst keinen Fehler.

Wenn du prüfen möchtest, ob ``message`` übergeben wurde, dann kannst du das mit ``exists:`` machen. Das sieht dann so aus:

Code: Alles auswählen

<p tal:condition="exists: request/message">
    Es gibt eine Message
</p>
<p tal:condition="not: exists: request/message">
    Keine Message
</p>
Wenn du nicht weißt ob du etwas übergeben bekommst, dann kannst du es auch so machen:

Code: Alles auswählen

<p tal:condition="exists: request/message"
   tal:content="request/message"
>
    [Diese Nachricht wird ueberschrieben]
</p>
So geht es auch:

Code: Alles auswählen

<p tal:content="request/message | default">
    Keine Message
</p>
mfg
Gerold
:-)