$validator->addData('field_name', 'Other', false); $validator->addData('field_prompt', 'Other', false); $validator->addData('field_required', 'matchRegex', false, '!^(on|off)$!'); $validator->addData('field_active', 'matchRegex', false, '!^(on|off)$!'); if ($result = $validator->checkData()) { // __ FORM IS VALID // TODO -> Which below logic is better? the computed diff, or send all fields for update? /* // make a difference between updated & original field $update = array_diff_assoc(Pommo_Fields::makeDB($_POST),$field); // restore the ID $update['id'] = $field['id']; */ // let MySQL do the difference processing $update = Pommo_Fields::makeDB($_POST); if (!Pommo_Fields::update($update)) { $json->fail('error updating field'); } $json->add('callbackFunction', 'updateField'); $json->add('callbackParams', $update); $json->success(Pommo::_T('Settings updated.')); } else { // __ FORM NOT VALID $fieldErrors = array(); $errors = $validator->getErrors(); foreach ($errors as $key => $val) { $fieldErrors[] = array('field' => $key, 'message' => $val); } $json->add('fieldErrors', $fieldErrors); $json->fail(Pommo::_T('Please review and correct errors with your submission.')); }