Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inny][ZF2] InputFilter w zależności od wartości selecta
raker34
post 28.10.2013, 14:03:46
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 16.02.2011

Ostrzeżenie: (0%)
-----


Witam,
w jaki sposób w InputFilterze (lub jakoś inaczej) zaimplementować weryfikacje formularza ale na takiej zasadzie że ustalone pole input-text weryfikowane jest w zależności od wartości input-select.

Przykładowo ktoś w seleccie może wybrac ileś tam różnych wartości natomiast ostatnia wartość jest "dodaj nową pozycje". Wtedy js wyświetla nam ten dodatkowy input i ktoś musi wpisać tam nową wartość?

Czyli ten input-text jest weryfikowany w zależności od tego czy ktoś wybrał jakąś tam wartość w selekcie.

Pozdrawiam
Go to the top of the page
+Quote Post
lucio1988
post 19.11.2013, 22:41:32
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 3
Dołączył: 19.11.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


mineło trochę czasu, ale może ktoś inny będzie szukał rozwiązania. Najprostsza opcją jest przeciążenie metody isValid() formularza. Sprawdzasz w tej metodzie wartość selecta i w zależności od tej wartosci dodajesz lub usuwasz parametr required.

CODE

public function isValid()
{
if(!$this->has('mySelect')) {
return parent::isValid();
}

$value = $this->get('mySelect')->getValue();
if($value === 'expected_value') {
$filter = $this->getInputFilter();

if($filter->has('my_input')) {
// domyślnie ma false
$filter->get('my_input')->setRequired(true);
}
}

return parent::isValid();

}


druga możliwość to nadanie następujących opcji dla pola w InputFiltrze:
CODE
$this->add(array(
'name' => 'input_do_validacji',
'required' => true,
'validators' => array(
array(
'name' => 'NotEmpty',
'options' => array(
'type' => NotEmpty::NULL // dzięki temu pole nie będzie validowane w przypadku pustej wartości
)
)
)
));

i stworzenie własnego validatora, który będzie sprawdzał wartość pola select. Wadą takiego rozwiązania jest, iż domyślnie wyrzucane są błedy z wszystkich validatorów. Ale można to kontrolować poprzez break_chain_on_failure.


Możesz skorzystać też z kolekcji. Czyli masz pole select z opcjami do wyboru (bez opcji "dodaj nowe pole"), a pod spodem (lub obok) button z informacją w stylu: "nie znalazłeś swojej pozycji? Dodaj nową!". Button ten tworzy nowe pole input, co zf2 swietnie wspiera - nie będą potrzebne nowe validatory/przeciążanie isValid() formularza.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:50