2013-03-30 15 views
5

Jakoś nie mogę uzyskać Form Elements w Zend Framework 2, aby zostać zignorowanym.ZF2: Jak ustawić elementy formularzy, aby były ignorowane?

Wszystko to nie wydaje się działać:

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

Jak to wykorzystywane do pracy w Zend Framework1:

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

EDIT:
Dlaczego Potrzebuję opcji "ignoruj"?

Załóżmy, że Twój formularz ma przycisk przesyłania. W normalnym PHP, coś w rodzaju $_POST wyświetli również twój przycisk przesyłania. Zend 1 ma użyteczne opcje: setIgnore($flag) i getIgnore(), aby wykluczyć takie elementy. $form->getValues() (po sprawdzeniu poprawności) wyklucza wszystkie elementy z flagą "ignore" ustawioną na TRUE. Zobacz ZF1 manual.

+2

Co masz na myśli przez ignorować. Jaki byłby cel ignorowania elementu submit? Masz na myśli wykluczenie z walidacji? Czy chcesz zezwolić na puste wartości? Twoje pytanie nie jest proste. – Sam

+0

@Sam: Dzięki za podpowiedź. Myślałem, że "Zend-Frameworkerzy" będą wiedzieć, co mam na myśli. ;) Edytowałem moje orig. post w celu wyjaśnienia. – mdthh

+1

O ile mi wiadomo, ZF2 nie ma takiej funkcji i osobiście uważam to za dobrą rzecz, ponieważ jest całkiem bezużyteczne. Jeśli nie potrzebujesz żadnych danych POST, po prostu go nie używaj. Nie ma takiej potrzeby, aby w ogóle tego nie mieć. Ponieważ ustawiłeś Dane formularzy za pomocą '$ form-> setData ($ request-> getPost()) możesz po prostu wstawić' getPost() 'do zmiennej, a następnie' unset ($ postData ['submit']) 'lub tak ... – Sam

Odpowiedz

2

Wyjazd o inputfilters

Moja stosowanie jest tak:

  1. stworzyć swoją postać
  2. utworzyć filtr
  3. w użyciu kontrolera, który

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

O filtrze możesz to zrobić: $ factory = new InputFactory();

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

To nie jest rozwiązanie (przynajmniej przy pracy z metodą bind() formularza), dodatkowo allowEmpty jest przestarzałe od ZF2 2.4.8 – MonkeyMonkey