W jaki sposób wymagać pobrania od użytkownika jednego z dwóch pól formularza? - Zend

0
		$isbn_10 = new Zend_Form_Element_Text('isbn_10');
		$isbn_10->setLabel('ISBN_10')
				->addValidator('regex', false, array('/((1[03])*[ ]*(: ){0,1})*(([0-9Xx][- ]*){13}|([0-9Xx][- ]*){10})/'));

		$isbn_13 = new Zend_Form_Element_Text('isbn_13');
		$isbn_13->setLabel('ISBN_13')
				->addValidator('regex', false, array('/((1[03])*[ ]*(: ){0,1})*(([0-9Xx][- ]*){13}|([0-9Xx][- ]*){10})/'));

Chciałbym, żeby użytkownik musiał podać isbn_10 LUB isbn_13 i nie bardzo wiem jak ustawić, zeby było wymagane jedno z dwóch pól. Powyższy kod pochodzi z ZF 1.12. Nie bardzo widzę możliwość sprawdzenia tego z poziomu klasy Books_Form_Add, bo znalazłem tylko setRequired(true), ale to mnie nie urządza.

Przy okazji nasuneło mi się jeszcze jedno pytanie. W którym miejscu powinienem zweryfikować, czy w bazie znajduje się już książka o podanym numerze ISBN?

0

Musisz napisać własny walidator. Nadpisać jego metodę isValid, której drugim parametrem jest obiekt kontekstu formularza. W tym że kontekście masz dostęp do wszystkich informacji o formularzu. Sprawdź sobie czy te dwa pola są wypełnione. W drugiej sytuacji również można użyć własnego walidatora.

http://stackoverflow.com/questions/2393676/zend-form-validator-element-a-or-element-b

1 użytkowników online, w tym zalogowanych: 0, gości: 1