No importa que los tengas que crear, por decir te dejo un ejemplo del Beta de mi clase form de mi libreria:
Código PHP:
$usrTxt = new GeckoFormFieldTextbox( "usuario" );
$pwdTxt = new GeckoFormFieldPassword();
$confirmpwdTxt = new GeckoFormFieldPassword();
$noEmpty = new GeckoFormFieldValidatorEmpty(false, "El campo no puede estar vacio");
$validLength = new GeckoFormFieldValidatorLength(5,30, "El campo solo acepta entre 5 y 30 caracteres");
$equal = new GeckoFormValidatorEquals( $pwdTxt, $confirmpwdTxt );
$usrTxt->addValidator( $noEmpty )->addValidator( $validLength );
$pwdTxt->addValidator( $noEmpty );
$form = new GeckoForm();
$form->addField( $usrTxt )->addField( $pwdTxt )->addField( $confirmpwdTxt );
if( $form->validate() ) {
$user = $usrTxt->getValue();
$pwd = $pwdTxt->getValue();
}
Lo que hace el metodo validate de la clase form es primero ciclar por todos los validadores de formulario, y posteriormente por todos los validadores de los campos que tenga (cada campo tiene un metodo validate()).
Todo se hace con dos interfaces:
Código PHP:
interface GeckoFormValidatorInterface {
public function validate();
public function getErrorMessage();
public function getHTMLErrorMessage();
public function getErrorCode();
}
interface GeckoFormFieldValidatorInterface {
public function validate(GeckoFormFieldInterface $field);
public function getErrorMessage();
public function getHTMLErrorMessage();
public function getErrorCode();
}
Asi no importa si cada validador tiene diferentes mensajes o diferentes argumentos, con que implementen la interfaz la clase form puede validar el campo.
Saludos.