conditional outcome after saving a record
Archived from the Xataface Users forum.
ststoddard — Mon Nov 05, 2007 4:25 pm
Depending on a value entered in a form, I want the app to go to different places upon a user clicking ‘Save’. Usually I have no problem with this. However, in this instance, it doesn’t quite work.
- Code: Select all
function afterInsert(&$record){ $app =& Dataface_application::getInstance(); $auth =& Dataface_AuthenticationTool::getInstance(); $user =& $auth->getLoggedInUser(); $lc = $record->val('location_code'); // same as dataframe$val //print $lc; $date = $record->strval('date'); $status = $record->val('status'); $query = & $app->getQuery(); $eid = trim($query['eid'],"="); if ( strpbrk($lc,"X") ) $msg = "El codigo de casa usado en el registro no se encuentra en la base. Se ha indicado que la ficha debe ser revisada."; //print $date; if ( $user ) { if ( $status == "WORKED" ) { header("Location: index.php?-table=House_survey&-action=new_related_record&location_code=$lc&date=$date&-relationship=caracteristicas&--msg=$msg"); exit; } else { //This isn't working! Doesn't make sense. The app goes to house_survey list view, not the new related record form. header("Location: index.php?-table=Entomology&-action=new_related_record&eid=$eid&-relationship=encuesta"); } } }
Basically, when status is not ‘WORKED’ this should loop back to create a another version of the same form, with the same relation. However, it kicks me out to the list of related records already entered.
???
shannah — Mon Nov 05, 2007 4:42 pm
This sort of thing is better handled in the after_action_edit() method, as the beforeInsert() trigger is called whenever a record is inserted through the API. (many records could be inserted in a single request).
Nonetheless this code should work. You may want to try adding an exit call after your header() (you did that for the first case but not the second).
-Steve