[TYPO3-german] if Abfrage + lib.stdheader

JoH asenau info at cybercraft.de
Sun Jul 8 20:03:42 CEST 2007


> sorry, aber so ganz ist's mir noch nicht klar ...
>
>>> In der deutschen TSref steht zu "field" z.B.:
>>>
>>> "Setzt den Inhalt auf $cObj->data[field]."
>>>
>>> Daraus werde ich nicht schlau, wie sagt mir obiges, dass ich "field"
>>> nur bei diesem oder jenem Objekt anwenden kann?

Nö, aber in diesem Fall ist es ein IMAGE und das bekommt seine Daten aus
IMAGE.file.
Es hängt immer vom Typ des verwendeten TS Elements ab.
Wenn es vom Typ her mit Text arbeiten kann, kannst Du den Wert mit "field"
auslesen.
IMAGE ist aber kein Text sondern bekommte Daten über file und das ist vom
Typ imgResource. Also kein IMAGE.field und auch kein IMAGE.stdWrap.field
möglich.

>> Du kannst das zwar anwenden, aber für ein IMAGE macht das nur Sinn,
>> wenn Du es im Bereich von "file" einsetzt, weil man aus einem
>> simplen Text einfach kein Bild generieren kann. Mal abgesehen vom
>> GIFBUILDER, aber auch in dem Fall gehört das "field" nicht zu IMAGE
>> sondern zum TEXT Element im GIFBUILDER.
>
>>>> required = 1 geht ebenfalls nicht, weil das Bild als solches ja
>>>> auch ohne Text erzeugt wird.
>>> Zu "required" sagt die Doku:
>>>
>>> "Wenn diese Eigenschaft gesetzt ist, muss der Inhalt nach allem
>>> Importieren von Inhalten und Prozeduren, die bis jetzt stattgefunden
>>> haben (»data, »field, »current, »listNum, »trim) einen Wert haben."
>>
>> Genau und deswegen liefert required in Deinem Fall immer "true"
>> zurück, weil der GIFBUILDER auch ohne Deinen Text ein Bild erzeugt.
>
> Okay, aber ich habe doch die Eigenschaft "field" der stdWrap-Funktion
> gesetzt, also müsste sich das "required" doch auf dieses "field"
> beziehen ... Dass sich das "required" nun auf das von GIFBUILDER
> erzeugte Bild bezieht spricht doch dann eigentlich gegen die Erklärung
> der Doku, oder nicht? Ich meine, außer "field" habe ich keine der in
> der Doku benannten Eigenschaften gesetzt ...

Das interessiert aus oben genannten Gründen nicht. Wenn "field" nicht
gezogen wird, kannst Du es auch nicht für eine Abfrage verwenden.

>>> Gut, wenn "field" ohnehin nicht geht, kann ich "required" auch nicht
>>> einsetzen, da es in direktem Zusammenhang steht, das ist mir jetzt
>>> klar.
>>
>> Es steht in keinem direkten Zusammenhang ;-)
>
> Wieso? "required" bezieht sich doch laut Doku auf die Werte »data,
> »field, »current, »listNum, oder »trim. Wenn keine der Eigenschaften
> gesetzt ist bzw. bei einem Objekt, welches diese Eigenschaft nicht
> unterstützt, kann "required" nicht angewand werden.

<quote>
This flag requires the content to be set to some value after any
content-import and treatment that might have happend now (data, field,
current, listNum, trim). Zero's is NOT regarded as empty! Use "if" instead!
If the content i empty, "" is returned immediately.
</quote>

Da steht, daß es sich auf content im _allgemeinen_ bezieht. Allerdings auf
content, der ggf. bereits durch data, field, current, listNum oder trim
verändert wurde.
In Deinem Fall kommt der content aus dem GIFBUILDER und ist deswegen immer
"true", weil GIFBUILDER auch ohne Text eine hübsche Grafik zurückliefert.

>> "field" liefert den Inhalt eines Feldes
>> "required" liefert true zurück, wenn irgendein Inhalt im Element ist.
>
> Aber im Falle von meinem gesetzten "field" war ja gar kein Inhalt
> vorhanden, da ja falsch gesetzt oder nicht?

Doch - eben der Inhalt aus dem GIFBUILDER und damit bekam required immer
"true" zurück.

>> TSref ist Dein Freund :-)
>
> Jo, das sagen alle, aber wie ich deinen obigen Hinweisen entnehme muss
> man trotzdem immer schauen, ob man diese oder jene Eigenschaft nun auf
> das erstellte Objekt anwenden kann oder nicht.

Korrekt, deswegen brauchst Du ja auch die TSref zum Nachschlagen.
Prinzipiell geht nur das, was dort auch angegeben ist.

> Das wäre ja nicht schlimm ss bleibt aber immer ein Rest
> Rumprobiererei + man ist oft auf Hinweise von anderen angewiesen, was
> schon nervt finde ich. Da sind Programmier- und Skriptsprachen doch
> um einiges klarer ...

Es hält sich in Grenzen und mit ein wenig Übung bekommt man das in der Regel
problemlos hin. ;-)

Joey

-- 
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your gob sometimes!)
Dieter Nuhr, German comedian
openBC/Xing: http://www.cybercraft.de
T3 cookbook: http://www.typo3experts.com




More information about the TYPO3-german mailing list