The form itself can provide the original value.

How should a filter return an "unfiltered" value on a already filtered input?
There is no way for a filter to know what the original value was.

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com

----- Original Message ----- From: "Andrew Ballard" <[email protected]>
To: "Philip G" <[email protected]>
Cc: "Zend FW General" <[email protected]>
Sent: Thursday, January 21, 2010 8:09 PM
Subject: Re: [fw-general] Zend_Filter for visual output?


On Thu, Jan 21, 2010 at 12:23 PM, Philip G <[email protected]> wrote:

I don't suppose there's a way to kind of doing a reverse direction of filer
on data for visual output?
Specifically;
Using Zend_Form(), I have Zend_Filter_Digits on a phone number field. This works well to strip out all non-digits from a person's number. But now when
the person views the form value, or gets an error and sees their entered
data, the number has been stripped. I'd like to be able to either display
what they put in there, or rather filter it to a valid visual representation
of a phone number. It's really Zend_Filter the other direction, like
Zend_UnFilter. lol
---
Philip
[email protected]
http://www.gpcentre.net/


I agree it would be nice in some cases to have partially or totally
unfiltered content shown in the web controls. For this particular
case, I created a Project_Form_Element_PhoneNumber that inherits from
Zend_Form_Element_Text and has a custom view helper to display phone
numbers with the desired visual formatting. It works well for me since
all the cases I've had to use it for are in the North American
numbering plan. It could get stickier if it had to support
international phone numbers, though.

As a more general solution, what do you think about this?

* a Zend_Formatter_Interface that defines a method format() similar to
the Zend_Filter_Interface that defines a method filter(); The
framework could include several default formatters that handle common
data elements such as dates, numbers, phone numbers, etc. Obviously
you could write your own if what you needed wasn't provided.
* a new property added to Zend_Form_Element_Text to which one may
assign a class that implements this new interface; if a formatter was
assigned, it would be used by the view helper to format the value
attribute of the input element. I don't think chaining would be
necessary here, so a simple 1:1 has-a relationship would be fine.
* a boolean property _useUnFiltered that, if set to true, would cause
the view helper to bypass the formatter and use the raw, unfiltered
input for the value of the input element rather than the filtered
value.




Andrew

Reply via email to