• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Bei Selectform einzelnen <option eine CSS Klasse geben?

copy

New member
Hallo,

ich habe mir ein Formular gebau mit verschiedenen Selectboxen. Der kompletten Selectbox habe ich eine CSS Klasse mit myform->class=myselect zugewiesen.

Wie kann ich aber den einzelenen option eine class mitgeben.

<option class="class1" value..... usw

Ich möchte jedem option eine andere Klasse zuweisen können um diese, je nach Inhalt anders einzufärben. Die optionwerte kommen aus der DB und werden mit addMultioption hinzugefügt.

Danke für euere Hilfe

Gruß Copy
 

Mr.AndersoN

New member
Geht nicht - zumindest mit den ZF eigenen Mitteln.

Da müsstest du eigene Klassen für ViewHelper/Form-Element erstellen und die Funktion selbst implementieren.
 

copy

New member
Select <option Class="myclass"....

Hallo,

bin leider nicht weitergekommen und brauche einen Ansatz wie ich und welche Klassen ich erweitern muss. Siehe oben.

Mir ist noch nicht ganz klar wie das gehn soll. Ich brauche ja einen Parameter zusätzlich für die Übergabe der Klasse für jede option der Selectbox.

Welche Klassen muss man erweitern? Nutze Zend Form im Moment nur um das Form zu erstellen und auszugeben nicht mit MVC.

Danke für eure Hilfe


Gruß Copy
 

Kaiuwe

Super-Moderator
copy schrieb:
bin leider nicht weitergekommen...
Wenn du die einzelnen Werte kennst, dann kannst du in CSS mit attributbedingten Formaten arbeiten. Oder du verwendest CSS3-Selektoren (z.B. für Zebrastreifen) und für ältere/schlechte Browser einfach JavaScript.
copy schrieb:
...brauche einen Ansatz wie ich und welche Klassen ich erweitern muss.
Willst du die CSS-Klassen in HTML zuweisen, musst du dir nur einen eigenen View-Helfer für das "select"-Element schreiben. Siehe dazu den Standard-View-Helfer für die Auswahlliste.
 

copy

New member
Class in option einer Selectbox

Hallo Kaiuwe,

ich möchte CSS Klassen im HTML zuweisen. Aslo muss ich mir einen Viewhelfer schreiben ok. Das hatte ich mir schon gedacht und hatte auch mir die Original Klasse angeschaut.

Ich versteht nur nicht wo ich den zusätzlichen Parameter mit unterbringen kann, damit mein Helper das auch so rendert wie ich es haben möchte. Ich benutze ja die normalen Form klassen also:

myselect= new Zend_Form_Select ( aus dem kopf geschrieben. nur als Beispiel falls falsch)

füge die Werte mit addMutiloptions hinzu.

Nun müsste ich ja noch die CSS Klassen zuweisen können. Und zwar jeden Eintrag eine eigene, da sie variable sein sollen. Die Werte kommen aus der DB und sollen je nach Inhalt eine andere class=... bekommen.

Sorry aber ich habe noch nicht sehr viel Erfahrung mit den Framework. Ich vesteht einfach den Zusammenhang zwischen den Form elementen, Decorators, Viewhelfern nicht. Wo wird was aufgerufen.?:(

Gruß Copy
 

Kaiuwe

Super-Moderator
Ich versteht nur nicht wo ich den zusätzlichen Parameter mit unterbringen kann, damit mein Helper das auch so rendert wie ich es haben möchte.
Ich hatte dir doch schon den Link zum View-Helfer für die Auswahlliste gepostet. Daraus erstellt du dir einen eigenen Helfer:
PHP:
class My_View_Helper_FormSelectExtended extends Zend_View_Helper_FormElement
{

}
Du musst noch folgendes anpassen:
  • Methode "_build" um einen Parameter für das HTML-Attribut "class" erweitern
  • den Aufruf der "_build"-Methode in der Methode "formSelect" entsprechend ändern
  • da die Werte der Auswahlliste mit den CSS-Klassen bei dir zusammenhängen, musst das übergebene Array für die Optionswerte ($options) erweitert werden (z.B. "array(array('value' => '', 'label' => '', 'class' => ''))")
  • die foreach-Schleife in der Methode "formSelect" dann für den neuen Array-Aufbau anpassen
So in der Art sollte es reichen.
 
Oben