Re: [QF] - setConstants() messign up elements value?
| From: | Bertrand Mansion | Date: | Thu, 29 Jan 2004 12:32:24 +0000 |
| Subject: | Re: [QF] - setConstants() messign up elements value? | ||
| References: | 1 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-10422@lists.php.net to get a copy of this message | ||
<Sebastian.Baran@dialcom.com.pl> wrote :
> Hi all,
>
>
> I have the following (pseudo)code:
>
> [..]
>
> $sform->addElement('text', '_date', 'Date: ', '');
> $sform->setDefaults(array('_date'=>date('d.m.Y')));
>
> [..]
>
> if ($sform->validate()) {
>
> [..]
>
> // convert dd.mm.YYYY to YYYYmmdd format to put it into DB
> $sform->applyFilter('_date', 'prepare_date');
>
> if ($add_mode) {
> echo '1: '.$sform->getElementValue('_date');
>
> [put data into DB]
> $id = mysql_insert_id($db->connection);
>
> $sform->setConstants(array("id"=>$id));
>
> echo '2: '.$sform->getElementValue('_date');
> }
> elseif ($edit_mode) {
> [update record in DB]
> }
> }
>
> [..]
>
>
> Everything's working fine except with '_date' field.
>
> 1) open page with form to add new record
> 2) submit with correct values
> 3) above code outputs:
>
> 1: 29.01.2004
> 2: 20040129
>
> Why does seConstants() for "id" field change "_date" field value?????
> And more why, though getElementValue()
>
> "Returns the element's raw value such as submitted by the form (not
> filtered), set by setDefaults() or setConstants(). "
> (quoted from QF docs) I get filtered value of "_date" field, but only
> after setConstants() even not touching "_date" field?
>
>
> I'm confused. Any help appreciated.
setConstants() will trigger the 'updateValue' event in each form elements,
that is the reason why the value is modified because it has been filtered
beforehand. Normally, you use setConstants() before your form is validated.
In your case, I think there is a logic problem. I don't see why you would
use setConstants() here.
Bertrand Mansion
Mamasam