Sorry, It does. I made a mistake. Thanks .It works.
On Wed, Dec 30, 2009 at 10:43 PM, Hector Virgen <[email protected]> wrote: > That's interesting, Zend_Date#isLater() is supposed to return a boolean. I > just confirmed this with a quick unit test: > > public function testZendDateIsLaterReturnsBoolean() > { > $date1 = new Zend_Date(); > $date2 = new Zend_Date(); > $result = $date1->isLater($date2); > $this->assertTrue(is_bool($result)); > } > > Is that maybe a var_dump of something else? Looks like a dump of $context. > > -- > Hector > > > > On Wed, Dec 30, 2009 at 1:32 PM, Jigal sanders <[email protected]>wrote: > >> Hi Hector, >> >> I knew all the time there was something wrong in the addValidator function >> but didn't know what. This works indeed better. >> >> Now I have this function: >> >> >> public function isValid($value, $context = null){ >> $date = new Zend_Date($value,'dd-MM-YYYY'); >> $this->_setValue($value); >> >> $error = false; >> //var_dump($this->_fieldsToCompare); >> //exit; >> >> foreach($this->_fieldsToCompare as $fieldName){ >> if(!isset($context[$fieldName])){ >> $error = true; >> $this->_error(self::MSG_DATEBEFORE); >> break; >> } >> $date2 = new Zend_Date($context[$fieldName],'dd-MM-YYYY'); >> $result = $date2->isLater($date); >> echo $result; >> } >> return !$error; >> } >> >> but the $result dumps the whole object: >> >> array(8) { ["evt_name"]=> string(9) "bladiebla" ["evt_description"]=> >> string(0) "" ["adr_id"]=> string(1) "3" ["evt_startdate"]=> string(10) >> "20-12-2009" ["evt_enddate"]=> string(10) "30-12-2009" ["evt_starttime"]=> >> string(0) "" ["evt_endtime"]=> string(0) "" ["evt_amtpersons"]=> string(0) >> "" } >> >> But I only want a true or false. >> >> >> >> On Wed, Dec 30, 2009 at 10:20 PM, Hector Virgen <[email protected]>wrote: >> >>> I think instead you want to pass in the field name (as a string) that you >>> want to compare to: >>> >>> $evtEndDate->addValidator('CompareDates',false,array<http://www.php.net/array> >>> ('evt_enddate')); >>> >>> Then, in your validator class, you can easily extract the comparison date >>> from the $context array. Once you have that value, create a Zend_Date object >>> from it and compare it to the Zend_Date object created with $value. >>> >>> I hope this helps :) >>> >>> -- >>> Hector >>> >>> >>> >>> On Wed, Dec 30, 2009 at 1:15 PM, Jigal sanders <[email protected]>wrote: >>> >>>> And as i thought I am already in trouble: >>>> See comments in the code below. >>>> >>>> public function isValid($value, $context = null){ >>>> $date = new Zend_Date($value,'dd-MM-YYYY'); >>>> $this->_setValue($value); >>>> >>>> $error = false; >>>> var_dump($this->_fieldsToCompare); >>>> //this dump shows me the acutal text box in the form with the date >>>> in it and the label and so on. >>>> foreach($this->_fieldsToCompare as $fieldName){ >>>> echo $context[$fieldName]; >>>> //this echo is empty. >>>> if(!isset($context[$fieldName]) || $value !== >>>> $context[$fieldName]){ >>>> $error = true; >>>> $this->_error(self::MSG_DATEBEFORE); >>>> break; >>>> } >>>> } >>>> return !$error; >>>> } >>>> >>>> What i need is the value of the startDate which i have given in my >>>> addValidator function :$evtEndDate->addValidator('CompareDates',false, >>>> array <http://www.php.net/array>($evtStartDate)); and then convert it >>>> to a date object in order to be able to compate dates with the isEarlier >>>> function. >>>> How can i do this? >>>> >>>> >>>> On Wed, Dec 30, 2009 at 10:04 PM, Jigal sanders >>>> <[email protected]>wrote: >>>> >>>>> figured it out , i think. >>>>> I changed my construct function to: >>>>> >>>>> public function __construct($fieldsToCompare =array()){ >>>>> if(is_array($fieldsToCompare)){ >>>>> foreach($fieldsToCompare as $field){ >>>>> echo $field; >>>>> exit; >>>>> $this->_fieldsToCompare[] = $field; >>>>> } >>>>> }else{ >>>>> $this->_fieldsToCompare[] = (string)$fieldsToCompare; >>>>> } >>>>> >>>>> >>>>> } >>>>> >>>>> No i have to see in my further code if i can use it since i need to >>>>> make it to a zend_date object later on in my isValid function. >>>>> >>>>> >>>>> On Wed, Dec 30, 2009 at 10:02 PM, Hector Virgen <[email protected]>wrote: >>>>> >>>>>> What is the value of $evtStartDate before calling addValidator()? >>>>>> >>>>>> -- >>>>>> Hector >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Dec 30, 2009 at 12:48 PM, Jigal sanders < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> sorry to disturb but i really don't get it working. >>>>>>> It starts already that in the constructor the $_fieldsToCompare >>>>>>> array stays empty. While this is the way i instantiate the validator: >>>>>>> >>>>>>> $evtEndDate->addValidator('CompareDates',false,array<http://www.php.net/array> >>>>>>> ($evtStartDate)); >>>>>>> >>>>>>> this is the full code >>>>>>> >>>>>>> http://pastebin.com/f5f36971f >>>>>>> >>>>>>> >>>>>>> On Wed, Dec 30, 2009 at 7:46 PM, Hector Virgen >>>>>>> <[email protected]>wrote: >>>>>>> >>>>>>>> You might want to look at the Zend_Date documentation for comparing >>>>>>>> dates. >>>>>>>> >>>>>>>> >>>>>>>> http://framework.zend.com/manual/en/zend.date.overview.html#zend.date.others.comparison >>>>>>>> >>>>>>>> >>>>>>>> <http://framework.zend.com/manual/en/zend.date.overview.html#zend.date.others.comparison>You >>>>>>>> can hint to your validator (perhaps with another constructor argument) >>>>>>>> as to >>>>>>>> how to compare the dates... should A be before B, or after B, or equal >>>>>>>> to B? >>>>>>>> >>>>>>>> -- >>>>>>>> Hector >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Dec 30, 2009 at 10:42 AM, Jigal sanders < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hello Hector, >>>>>>>>> >>>>>>>>> I already removed the validator by one of the date fields. >>>>>>>>> Now the problem is on how to compare the dates. I created date >>>>>>>>> objects from all the date fields within the validator. But I don't >>>>>>>>> know how >>>>>>>>> to do the last part (i.e comparing the dates.) I converted the field >>>>>>>>> values >>>>>>>>> to zend_date objects. But when I print the date object to the screen >>>>>>>>> i get: >>>>>>>>> >>>>>>>>> array(1) { [0]=> object(Zend_Date)#109 (8) { ["_locale:private"]=> >>>>>>>>> string(5) "en_US" ["_fractional:private"]=> int(0) >>>>>>>>> ["_precision:private"]=> >>>>>>>>> int(3) ["_unixTimestamp:private"]=> string(10) "1262127600" >>>>>>>>> ["_timezone:private"]=> string(16) "Europe/Amsterdam" >>>>>>>>> ["_offset:private"]=> >>>>>>>>> int(-3600) ["_syncronised:private"]=> int(0) ["_dst:protected"]=> >>>>>>>>> bool(true) >>>>>>>>> } } >>>>>>>>> >>>>>>>>> See here the updated code: >>>>>>>>> http://pastebin.com/m6cb13d9d >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wed, Dec 30, 2009 at 6:19 PM, Hector Virgen <[email protected] >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> It looks like you're adding the custom compareDates validator to >>>>>>>>>> both date elements. It might be easier to just put it in one. >>>>>>>>>> >>>>>>>>>> If you can determine that $a < $b, then you already know that $b > >>>>>>>>>> $a. >>>>>>>>>> >>>>>>>>>> Also, in the $evtStartDate element, you are setting the field to >>>>>>>>>> compare to $evtEndDate, which hasn't been created yet. Instead of >>>>>>>>>> passing in >>>>>>>>>> the element, try passing in the element's field name "evt_enddate" >>>>>>>>>> (as a >>>>>>>>>> string). >>>>>>>>>> >>>>>>>>>> I hope this helps. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Hector >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Dec 30, 2009 at 5:16 AM, Jigal sanders < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hello everyone, >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I have a form with two date fields. One startdate and one >>>>>>>>>>> enddate. I want to make sure, the end date is not before the >>>>>>>>>>> startdate. >>>>>>>>>>> I am trying to create my own validator. Now i based my validator >>>>>>>>>>> on this tutorial: >>>>>>>>>>> http://cogo.wordpress.com/2008/04/16/custom-validators-for-zend_form_element/ >>>>>>>>>>> Here is my code: http://pastebin.com/f20aafd32 it's not yet >>>>>>>>>>> ready. >>>>>>>>>>> My problem is at line 52 where the value of $this >>>>>>>>>>> ->_fieldsToCompare is empty all the time. >>>>>>>>>>> I also have problems in comparing the dates. >>>>>>>>>>> >>>>>>>>>>> Kan someone please help me along? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> <http://cogo.wordpress.com/2008/04/16/custom-validators-for-zend_form_element/> >>>>>>>>>>> >>>>>>>>>>> Kind regards, >>>>>>>>>>> >>>>>>>>>>> J. Sanders >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Met vriendelijke groet, >>>>>>>>> >>>>>>>>> Jigal Sanders >>>>>>>>> A.J. Ernststraat 739 >>>>>>>>> 1082 LK Amsterdam >>>>>>>>> Mobiel: 06-42111489 >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Met vriendelijke groet, >>>>>>> >>>>>>> Jigal Sanders >>>>>>> A.J. Ernststraat 739 >>>>>>> 1082 LK Amsterdam >>>>>>> Mobiel: 06-42111489 >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Met vriendelijke groet, >>>>> >>>>> Jigal Sanders >>>>> A.J. Ernststraat 739 >>>>> 1082 LK Amsterdam >>>>> Mobiel: 06-42111489 >>>>> >>>> >>>> >>>> >>>> -- >>>> Met vriendelijke groet, >>>> >>>> Jigal Sanders >>>> A.J. Ernststraat 739 >>>> 1082 LK Amsterdam >>>> Mobiel: 06-42111489 >>>> >>> >>> >> >> >> -- >> Met vriendelijke groet, >> >> Jigal Sanders >> A.J. Ernststraat 739 >> 1082 LK Amsterdam >> Mobiel: 06-42111489 >> > > -- Met vriendelijke groet, Jigal Sanders A.J. Ernststraat 739 1082 LK Amsterdam Mobiel: 06-42111489
