HeadStyle Helfer Das HTML Element <style> wird verwendet um CSS Stylesheets im HTML Element <head> zu inkludieren. HeadLink verwenden um CSS Dateien zu verlinken HeadLink sollte verwendet werden um <link> Elemente zu Erstellen die externe Stylesheets enthalten. HeadStyle wird verwendet wenn man Stylesheets inline definieren will. Der HeadStyle Helfer unterstützt die folgenden Methoden für das Setzen und Hinzufügen von Stylesheet Deklarationen: appendStyle($content, $attributes = array()) offsetSetStyle($index, $content, $attributes = array()) prependStyle($content, $attributes = array()) setStyle($content, $attributes = array()) In allen Fällen ist $content die aktuelle CSS Deklaration. $attributes sind alle zusätzlichen Attribute die das style Tag erhalten soll: lang, title, media, oder dir sind alle möglich. Abhängige Kommentare setzen HeadStyle erlaubt es ein Script Tag in abhängige Kommentare zu setzen, das es erlaubt es vor speziellen Browsern zu verstecken. Um abhängige Tags zu setzen, muß der abhängige Wert als Teil des $attrs Parameters im Methodenaufruf übergeben werden. Headstyle mit abhängigen Kommentaren headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7')); ]]> HeadStyle erlaubt auch das Erfassen von Style Deklarationen; das kann nützlich sein wenn eine Deklaration programmtechnisch erstellt werden soll und Sie dann woanders platziert wird. Die Verwendung hierfür wird in einem unten angeführten Beispiel gezeigt. Letztendlich kann auch die headStyle() Methode verwendet werden um schnellstens Deklarationselemente hinzuzufügen; die Signatur dafür ist headStyle($content$placement = 'APPEND', $attributes = array()). $placement sollte entweder 'APPEND', 'PREPEND', oder 'SET' sein. HeadStyle überschreibt jedes append(), offsetSet(), prepend(), und set() um die Verwendung der oben gelisteten speziellen Methoden zu forcieren. Intern wird jeder Teil als stdClass Token gespeichert, welches später serialisiert wird durch Verwendung der itemToString() Methode. Das erlaubt es die Teile im Stack zu Prüfen, und optional auch zu Ändern durch einfaches Modifizieren des zurückgegebenen Objektes. Der HeadStyle Helfer ist eine konkrete Implementation des Platzhalter Helfers. Standardmäßig wird die UTF-8 Kodierung verwendet Standardmäßig verwendet Zend Framework UTF-8 als seine Standardkodierung, und speziell in diesem Fall, macht das Zend_View genauso. Die Zeichenkodierung kann im View Objekt selbst auf etwas anderes gesetzt werden indem die Methode setEncoding() verwendet wird (oder der Parameter encoding bei der Instanzierung angegeben wird). Trotzdem, da Zend_View_Interface keine Zugriffsmethoden für die Kodierung anbietet ist es möglich dass, wenn man eine eigene View Implementation verwendet, man keine getEncoding() Methode hat, welche der View Helfer intern für die Erkennung des Zeichensets verwendet in das kodiert werden soll. Wenn man UTF-8 in solch einer Situation nicht verwenden will, muss man in der eigenen View Implementation eine getEncoding() Methode implementieren. Grundsätzliche Verwendung des HeadStyle Helfers Ein neues Style Tag kann jederzeit spezifiziert werden: headStyle()->appendStyle($styles); ]]> Die Reihenfolge ist in CSS sehr wichtig; es könnte sein das man sichergestellen muß das Deklarationen in einer speziellen Reihenfolge geladen werden wegen der Reihenfolge der Kaskade; die verschiedenen append, prepend und offsetSet Direktiven können für diesen Zweck verwendet werden: headStyle()->offsetSetStyle(100, $customStyles); // Am Ende platzieren: $this->headStyle()->appendStyle($finalStyles); // Am Anfang platzieren: $this->headStyle()->prependStyle($firstStyles); ]]> Wenn man damit fertig ist und alle Style Deklarationen im Layout Skript ausgegeben werden können kann der Helfer einfach wiederholt werden: headStyle() ?> ]]> Den HeadStyle Helfer verwenden um Style Deklarationen zu Erfassen Hier und da müssen CSS Style Deklarationen programmtechnisch erstellt werden. Wärend String Kopplungen, HereDocs und ähnliches verwendet werden könnte, ist es oft einfacher das durch erstellen der Styles und deren Einfügung in PHP Tags zu machen. HeadStyle lässt das zu indem es in den Stack erfasst wird: headStyle()->captureStart() ?> body { background-color: bgColor ?>; } headStyle()->captureEnd() ?> ]]> Die folgenden Annahmen werden gemacht: Die Style Deklarationen werden dem Stack angefügt. Wenn Sie den Stack ersetzen sollen oder an den Anfang hinzugefügt werden sollten muß 'SET' oder 'PREPEND' als erstes Argument an captureStart() übergeben werden Wenn zusätzliche Attribute für das <style> Tag spezifiziert werden sollen, dann müssen diese in einem Array als zweites Argument an captureStart() übergeben werden.