On Wed, 7 May 2008, Andreas Schamberger wrote: > today I started to convert some of my forms to use UserInput. Generally > this is a great component. But there are two major show stoppers in my > eyes that force a programmer to write a lot of unnecessary duplicate > code. And surprisingly there are already two issues for them: > > #012345: ezcInputForm->isValid() > http://issues.ez.no/IssueView.php?Id=12345&activeItem=3 > > #011394: UserInput::emptyValue > http://issues.ez.no/IssueView.php?Id=11394&activeItem=2 > > Without these two little features it's really annoying as you have to > check also the case of a valid form with an additional foreach loop. > "if( empty( $form->getInvalidProperties() ) )" works only if you allow > empty strings and is still ugly as the bug reporter already notes in > issue #012345.
We'll make sure to include those in the next release then (which will not be 2008.1 as we've already passed the add-feature deadline for that). > I also like to have "require_string" as a filter_type: > In my eyes it does not make sense to add callbacks for this but instead > only strip the 'require_' part of the filter name and check the result > afterwards: > > $checkEmpty = false; > $filterName = $inputElement->filterName; > if ( substr( $filterName, 0, 8 ) === 'require_' ) > { > $checkEmpty = true; > $filterName = substr( $filterName, 8 ); > } > // filter_input call ... > if ( ( $value !== null && $checkEmpty === false ) || ( $value !== null > && !empty( $value ) ) ) > { > $this->properties[$elementName] = ezcInputForm::VALID; > // ... > > This way the require can also be used to require other filters that > output an empty string and not NULL and it doesn't add too much > complexity. The usage of "require_" could of course also be restricted > to them to make the usage clearer. Could you file an issue for this please? > > With these two issues fixed the component is more intuitive to use: > > if ( $form->isValid() ) > { > // submit to db ... > } > else > { > // form is not valid, send data to template of this form ... > $properties = array(); > $warnings = array(); > foreach ( $definition as $name => $dummy ) > { > if ( $form->hasValidData( $name ) ) > { > $properties[$name] = $form->$name; > } > else > { > $properties[$name] = htmlspecialchars( $form->getUnsafeRawData( > $name ) ); > $warnings[$name] = 'invalid_form'; > } > } > } > > I know it's already late in the release cycle for the 2008.1 release but > could these two still make it into the next release? The code changes > are really small and also no existing APIs are touched. I can't promise it - but I will see whether I've enough time to do this before the beta. regards, Derick k -- Components mailing list Components@lists.ez.no http://lists.ez.no/mailman/listinfo/components