always enter default value in empty field [message #68] |
Sun, 11 June 2006 19:21 |
semcycle
Messages: 8 Registered: June 2006 Location: Michigan, USA
|
Junior Member |
|
|
first off - thanks Tony , what an awesome framework !!
i have poked around in the samples & am now setting up an app of my own, where i ran into the following. Not sure if this is a bug or intended behavior, but here it is with my workaround:
in the mysql table:
column `errors` INT NOT NULL DEFAULT '0'
in the table class:
$fieldspec['errors'] = array('type' => 'integer',
'size' => 11,
'default' => '0');
This is not a required field. If this field is left empty upon adding a new record, a fatal error - column can not be null results.
workaround:
In std.validation.class.inc the default value gets inserted only for required fields.
i added the following lines to have this happen for all empty entries:
around line 77:
if (strlen($fieldvalue) == 0) {
// field is empty - is it allowed to be?
if (isset($fieldspec['required'])) {
if (isset($fieldspec['autoinsert'])
or isset($fieldspec['auto_increment'])) {
// value will be filled in later, so continue
} elseif (isset($fieldspec['default'])) {
$fieldvalue = $fieldspec['default'];
} else {
// '"$fieldname cannot be blank'
$this->errors[$fieldname] = getLanguageText('sys0020', $fieldname);
} // if
} // if
if ($fieldspec['type'] == 'date' or $fieldspec['type'] == 'datetime'
or $fieldspec['type'] == 'timestamp') {
if (isset($fieldspec['infinityisnull'])) {
$fieldvalue = '9999-12-31';
} // if
} // if
if ($fieldspec['type'] == 'boolean') {
$fieldvalue = $fieldspec['false'];
} // if
// ******************** added lines ***************************
// enter the default value for any empty field that has one set, not just required ones
if (isset($fieldspec['default'])) {
$fieldvalue = $fieldspec['default'];
} // if
// ********************* end of added lines *********************
// nothing left to validate, so return now
return $fieldvalue;
} // if
I am especially interested to find out if you think this may break other expected behavior.
Sem Abrahams
www.semcycle.com
|
|
|
Re: always enter default value in empty field [message #69 is a reply to message #68] |
Mon, 12 June 2006 04:53 |
AJM
Messages: 2363 Registered: April 2006 Location: Surrey, UK
|
Senior Member |
|
|
semcycle wrote on Mon, 12 June 2006 00:21 | first off - thanks Tony , what an awesome framework !!
|
Thanks. It's gratifying to now that my humble efforts are not a complete waste of time.
As for your error, if a field is defined as NOT NULL then by definition it *IS* required, but I take your point that if a default value has been defined then it should be used whenever no value has been input, required or not. I shall incorporate this fix in my next release.
Tony Marston
http://www.tonymarston.net
http://www.radicore.org
|
|
|