Re: Edit record validation versus New record validation (Solved)
I think it only works if you are using the 'id' field in your table. These tables are legacy tables that don't have an 'id' field as the primary key. So I guess in general you can say that isUnique only works if you have a primary key of 'id'. Do you agree? Rick On Jul 26, 9:18 am, euromark (munich) dereurom...@googlemail.com wrote: isUnique also works for edit!!! it does check on id != ownId automatically... On 25 Jul., 23:20, Rick will...@gmail.com wrote: Found my own answer/solution with this custom validator. I put this in my app_model and then can use it from any model. You use it as a rule as you would any core validator: [code] var $validate = array( 'partnumber' = array( 'rule1' = 'validateUniqueness', 'message' = 'This part number is not unique') ) [/code] And the code is: [code] /** * Fails if given value for field is not unique for that field in the table. * * @param type $fieldData - array(fieldname = fieldvalue) * @return type - true if unique. */ function validateUniqueness($fieldData) { $fields = array_keys($fieldData); $fieldName = $fields[0]; $values = array_values($fieldData); $fieldValue = $values[0]; // To determine whether we are going to insert (new) or update (edit) // get the current row ID. If empty then this is a new record // if not then it is an edit record. // If this is an edit then exclude the currentRow (the one we are // editing) from the uniqueness test by adding a condition. $currentID = $this-getID(); if (!empty($currentID) or $currentID = 0) { $rowID = $this-data[$this-name][$this-primaryKey]; $condition = ' AND ' . $this-name . '.' . $this-primaryKey != '$rowID'; } else { $condition = ''; } if ($this-findCount($fieldName = '$fieldValue' $condition, -1) 0) { return false; } else { return true; } } [/code] Rick --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Edit record validation versus New record validation (Solved)
isUnique also works for edit!!! it does check on id != ownId automatically... On 25 Jul., 23:20, Rick will...@gmail.com wrote: Found my own answer/solution with this custom validator. I put this in my app_model and then can use it from any model. You use it as a rule as you would any core validator: [code] var $validate = array( 'partnumber' = array( 'rule1' = 'validateUniqueness', 'message' = 'This part number is not unique') ) [/code] And the code is: [code] /** * Fails if given value for field is not unique for that field in the table. * * @param type $fieldData - array(fieldname = fieldvalue) * @return type - true if unique. */ function validateUniqueness($fieldData) { $fields = array_keys($fieldData); $fieldName = $fields[0]; $values = array_values($fieldData); $fieldValue = $values[0]; // To determine whether we are going to insert (new) or update (edit) // get the current row ID. If empty then this is a new record // if not then it is an edit record. // If this is an edit then exclude the currentRow (the one we are // editing) from the uniqueness test by adding a condition. $currentID = $this-getID(); if (!empty($currentID) or $currentID = 0) { $rowID = $this-data[$this-name][$this-primaryKey]; $condition = ' AND ' . $this-name . '.' . $this-primaryKey != '$rowID'; } else { $condition = ''; } if ($this-findCount($fieldName = '$fieldValue' $condition, -1) 0) { return false; } else { return true; } } [/code] Rick --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Edit record validation versus New record validation (Solved)
Found my own answer/solution with this custom validator. I put this in my app_model and then can use it from any model. You use it as a rule as you would any core validator: [code] var $validate = array( 'partnumber' = array( 'rule1' = 'validateUniqueness', 'message' = 'This part number is not unique') ) [/code] And the code is: [code] /** * Fails if given value for field is not unique for that field in the table. * * @param type $fieldData - array(fieldname = fieldvalue) * @return type - true if unique. */ function validateUniqueness($fieldData) { $fields = array_keys($fieldData); $fieldName = $fields[0]; $values = array_values($fieldData); $fieldValue = $values[0]; // To determine whether we are going to insert (new) or update (edit) // get the current row ID. If empty then this is a new record // if not then it is an edit record. // If this is an edit then exclude the currentRow (the one we are // editing) from the uniqueness test by adding a condition. $currentID = $this-getID(); if (!empty($currentID) or $currentID = 0) { $rowID = $this-data[$this-name][$this-primaryKey]; $condition = ' AND ' . $this-name . '.' . $this-primaryKey != '$rowID'; } else { $condition = ''; } if ($this-findCount($fieldName = '$fieldValue' $condition, -1) 0) { return false; } else { return true; } } [/code] Rick --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---