![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:50 |