turk porno porno escort rokettube
Ergebnis 1 bis 5 von 5

Thema: Parameter für Fieldset

  1. #1
    Neuer Benutzer
    Registriert seit
    20.02.2017
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard Parameter für Fieldset

    Hallo,

    ich arbeite mich derzeit in das Zf3 ein. Ich versuche mich gerade an den Fieldsets, da ich auch erstmals mit den FormCollections arbeite. Leider ist es mir noch ein Rätsel, wie man einem Fieldset Parameter übergeben kann (für Ein Select-Element).

    Für ein normales Select-Element, welches in einer Form angelegt wird, überhaupt kein Problem (einfach mit einer FormFactory Daten mittels set...()-Funktion Daten einschleusen):

    PHP-Code:
         $this->add(
                    [
                            
    'type'       => Select::class,
                            
    'name'       => 'team',
                            
    'attributes' => [
                                    
    'class' => 'form-control',
                            ],
                            
    'options'    => [
                                    
    'value_options' => $this->teamOptions,
                                    
    'label'         => 'Team',
                            ],
                    ]
                    ); 
    Nun möchte ich das Formular aber etwas kapseln und Fieldsets einsetzen (auch um später eine FormCollection zu erzeugen):

    PHP-Code:
    class TeamFieldset extends Fieldset implements InputFilterProviderInterface
    {
        public function 
    __construct()
        {
            
    parent::__construct('team');

            
    $this->setHydrator(new ClassMethodsHydrator());
            
    $this->setObject(new TippTeamEntity());
        }
        
        public function 
    init() {
            
            
    $this->add([
                    
    'name' => 'team',
                    
    'type'       => Select::class,
                    
    'options' => [
                            
    'value_options' => $options// $options soll Daten beinhalten! Wie übergeben?
                            
    'label' => 'Name of team',
                    ],
                    
    'attributes' => [
                            
    'required' => 'required',
                    ],
            ]);
        } 
    In einem weiteren Fieldset oder auch Form möchte ich nun das Fieldset nutzen, aber es auch mit Daten füttern.
    PHP-Code:
    $this->add ( [ 
                    
    'type' => TeamFieldset::class,
                    
    'name' => 'team',
                    
    'options' => [ 
                            
    'label' => 'Team',
                    ] 
            ] ); 
    Da ich ja keine direkte Instanz erzeuge, sondern das Objekt im Zf3 durch den Eintrag 'type' => TeamFieldset::class erzeugt wird, fällt das Nutzen des Konstruktors wohl weg. Bei einer Form übergebe ich Daten in einer FormFactory mittels set.....()-Funktion. Ähnliches benötige ich jetzt für die Fieldsets. Muss man hier auch mit Fieldset-Factorys arbeiten, wenn überhaupt möglich? Praktisch wäre natürlich, wenn die Daten in dem Array der add() - Funktion übergeben werden. Damit hatte ich aber keinen Erfolg:

    PHP-Code:
    $this->add ( [ 
                    
    'type' => TeamFieldset::class,
                    
    'name' => 'team',
                    
    'options' => [ 
                            
    'label' => 'Team',
                            
    'teamOptions' => ['Test1','Test2'], 
                    ] 
            ] ); 
    Ich hoffe ich konnte mein Problem darstellen und freue mich auf eine Antwort.

    Grüße

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Willkommen im Forum!
    Zitat Zitat von chicorelli Beitrag anzeigen
    Praktisch wäre natürlich, wenn die Daten in dem Array der add() - Funktion übergeben werden.
    Warum unbedingt direkt beim Hinzufügen? Danach reicht doch bestimmt auch.

    Wenn du ein Element dem Formular hinzugefügt hast, dann kannst du dies auch wieder vom Formular holen. Jetzt kannst du immer noch die Methode „setValueOptions“ ausführen.
    Das Gleiche gilt für das „Collection“-Element. Hier holst du nur zuerst das Zielelement („targetElement“). Ist dies ein „Fieldset“, dann muss du noch von diesem das „Select“-Element holen. Dann kannst du die Methode „setValueOptions“ ausführen.

    Zitat Zitat von chicorelli Beitrag anzeigen
    Damit hatte ich aber keinen Erfolg:
    PHP-Code:
    $this->add ( [ 
                    
    'type' => TeamFieldset::class,
                    
    'name' => 'team',
                    
    'options' => [ 
                            
    'label' => 'Team',
                            
    'teamOptions' => ['Test1','Test2'], 
                    ] 
            ] ); 
    Nein, nicht raten!
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Neuer Benutzer
    Registriert seit
    20.02.2017
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Vielen Dank für die Willkommensgrüße .

    ...und danke für die Tipps. Die Funktion setValueOptions erfüllt ihren Zweck total...muss nicht beim Hinzufügen initialisiert werden. Ich habe nur noch das Problem mit Collections. Du meintest ich muss mir das "targetElement" holen (was ja in der Regel mehreren Objekten entspricht).

    PHP-Code:
    $this->add([
                    
    'type' => Element\Collection::class,
                    
    'name' => 'results',
                    
    'options' => [
                            
    'label' => 'Results',
                            
    'count' => 2,
                            
    'should_create_template' => true,
                            
    'allow_add' => true,
                            
    'target_element' => [
                                
    'type' => ResultFieldset::class,
                            ],
                    ],
            ]); 
    Collection holen -> Hier kann ich mir dann über getOptions zwar den typ des targetElements holen, ich muss aber an die Elemente kommen. Evtl. kann es ja auch passieren, dass man nicht jedes Element der Collection mit den gleichen Werten darstellen möchte.
    PHP-Code:
    $this->get('results')->getOptions()); 
    Auch die Funktion getTargetElement(), welche die Collection bereit stellt, erscheint mir noch etwas rätselhaft. Mittels var_dump() konnte ich hier durch das Ändern von 'count' => 2 auf 'count' => 20 nicht wirklich mehr Daten feststellen. Obwohl mir getCount() anscheinend die korrekte Anzahl an Items ausgibt.

    Definition ResultFieldset:
    PHP-Code:
    $this->add ( [ 
                    
    'type' => TeamFieldset::class,
                    
    'name' => 'team',
                    
    'options' => [ 
                            
    'label' => 'Team',
                    ] 
            ] );
    ...
    ... 
    Ich muss nun also von meiner Collection auf alle Items (ResultFieldsets) zugreifen welches ein TeamFieldset beinhaltet, welches das SelectElement enthält. Ich hab da folgendes versucht:

    PHP-Code:
    foreach ($this->get('results')->getTargetElement() as $resultFieldset)
    {
            
    $resultFieldset->get('team1');

    Funktionierte aber nicht da getTargetElement() hier nicht so funktioniert wie ich es erwarte. Ich hätte gedacht, dass die Schleife genau 2x durchlaufen wird, da meine Collection 2 Einträge besitzt. Es wird allerdings 4x durchlaufen (da das ResultFieldset 4 Elemente besitzt).

    Irgendwie mache ich es mir wohl zu kompliziert?

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von chicorelli Beitrag anzeigen
    Funktionierte aber nicht da getTargetElement() hier nicht so funktioniert wie ich es erwarte. Ich hätte gedacht, dass die Schleife genau 2x durchlaufen wird, da meine Collection 2 Einträge besitzt. Es wird allerdings 4x durchlaufen (da das ResultFieldset 4 Elemente besitzt).
    Schau mal genau auf den Methodennamen: es heißt „getTargetElement“ – ohne „s“ am Ende – also Einzahl!

    Das Zielelement existiert nur einmal und durch die Angabe von „count“ wird es zweimal ausgegeben. Also nichts mit 2 Einträgen oder zwei Elementen. Die Schleife funktioniert daher, weil das Zielelement ein „Fieldset“ ist und dort das Interface „IteratorAggregate“ Anwendung findet.
    Und da es sich beim Zielelement bei dir um ein „Fieldset“ handelt, darfst du auch von diesem dein „Select“-Element holen:

    PHP-Code:
    $this->get('results')->getTargetElement()->get('mySelect')->setValueOptions([]); 
    (Im Quellcode einfach mal die Kommentare durchschauen: https://github.com/zendframework/zen...Collection.php)
    Geändert von Kaiuwe (21.02.2017 um 01:20 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. The Following User Says Thank You to Kaiuwe For This Useful Post:

    chicorelli (21.02.2017)

  6. #5
    Neuer Benutzer
    Registriert seit
    20.02.2017
    Beiträge
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Danke , hat funktioniert!

Ähnliche Themen

  1. Fieldset - Dynamisch erweitern
    Von N3X im Forum ZF2 Formulare
    Antworten: 2
    Letzter Beitrag: 28.05.2015, 13:06
  2. Fieldset wird nicht in anderes Fieldset inkludiert
    Von DaFe4u im Forum ZF2 Formulare
    Antworten: 1
    Letzter Beitrag: 10.08.2014, 19:24
  3. Fieldset und update
    Von Pateta im Forum ZF2 Formulare
    Antworten: 1
    Letzter Beitrag: 21.10.2013, 03:36
  4. Weitere Anzeigegruppe in einem Fieldset
    Von Tim im Forum Formulare
    Antworten: 4
    Letzter Beitrag: 09.02.2012, 15:18
  5. Fieldset um die Login Form
    Von oppi im Forum Formulare
    Antworten: 1
    Letzter Beitrag: 21.02.2011, 16:48

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •