2013-03-30 3 views
5

Irgendwie kann ich Formelemente in Zend Framework 2 nicht ignorieren.ZF2: Wie man Formularelemente einstellt, um ignoriert zu werden?

All dies scheint nicht zu funktionieren:

$this->add(array(
    'name' => 'submit', 
    'ignore' => TRUE, 
    'attributes' => array(
    'type' => 'submit', 
    'value' => 'Go!', 
    'id' => 'submitbutton', 
    'ignore' => TRUE 
), 
'options' => array(
    'ignore' => TRUE 
) 
)); 

Dies ist, wie es - Arbeit in Zend Framework1 verwendet:

//Zend Framework 1 
$this->addElement(
    'submit', 
    'login', 
    array(
    'ignore' => true, 
    'label' => 'Login' 
    ) 
); 

EDIT:
Warum sollte Ich brauche die Option "Ignorieren"?

Angenommen, Ihr Formular enthält einen Absenden-Button. Mit normalem PHP wird auch etwas wie $_POST Ihre Absenden-Schaltfläche auflisten. Zend 1 hat die nützlichen Optionen setIgnore($flag) und getIgnore() um solche Elemente auszuschließen. $form->getValues() (nach der Validierung) würde alle Elemente mit dem Flag 'ignore' auf TRUE ausschließen. Siehe ZF1 manual.

+2

Was meinen Sie ignorieren. Und welchen Zweck hätte es, ein Submit-Element zu ignorieren? Meinst du, von der Validierung auszuschließen? Willst du leere Werte zulassen? Ihre Frage ist nicht wirklich geradlinig. – Sam

+0

@Sam: Danke für Ihren Hinweis. Ich dachte "Zend-Frameworkers" wüsste was ich meine. ;) Ich habe meine orig. Beitrag zu klären. – mdthh

+1

Soweit ich weiß, ZF2 hat keine solche Funktion und persönlich würde ich dies als eine gute Sache betrachten, da es auch ziemlich nutzlos ist. Wenn Sie keine POST-Daten benötigen, verwenden Sie sie einfach nicht. Es gibt keine wirkliche Notwendigkeit, es überhaupt nicht zu haben. Da Sie die Form-Daten mit '$ form-> setData ($ request-> getPost())' setzen, können Sie einfach 'getPost()' in eine Variable packen und dann 'unset' ($ postData ['submit']) 'oder so ... – Sam

Antwort

2

Check-out über inputfilters

Mein Einsatz ist wie folgt aus:

  1. erstellen Sie Ihre Form
  2. erstellen Sie einen Filter
  3. in den Controller, dass

    $form = new BasicForm(); 
    $form->setInputFilter(new BasicFilter()); 
    

Über den Filter können Sie dies tun: $ factory = new InputFactory();

$this->add($factory->createInput(array(
     'name' => 'birthday', 
     'required' => false, 
     'allowEmpty' => true,)); 
+0

Dies ist nicht die Lösung (zumindest wenn Sie mit der Methode bind() des Formulars arbeiten), zusätzlich ist allowEmpty seit ZF2 2.4.8 veraltet – MonkeyMonkey

0

Ich denke, die Sie suchen

'options' => array(
    'exclude' => true, 
),