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

Reply via email to