Saving Form Data
The route:BeforeComplete
event is used to store form data. Different
APIs are used to save data, depending on the type of form.
Example: saving password data
This example constructs an object that contains the relevant information from the form
and saves it to the ViewData
object, so it can be passed. This example
can be seen in the Account.js
SavePassword
function.
var profileForm = server.forms.getForm('profile'); //gets the profile form object
var newPasswords = profileForm.login.newpasswords;
...
var result = { //constructs an object containing the form result
currentPassword: profileForm.login.currentpassword.value,
newPassword: newPasswords.newpassword.value,
newPasswordConfirm: newPasswords.newpasswordconfirm.value,
profileForm: profileForm
};
if (profileForm.valid) {
res.setViewData(result); // adds form result to the ViewData object
this.on('route:BeforeComplete', function () { // creates the function to run before middleware completion
var formInfo = res.getViewData(); // creates object with data to save
var customer = CustomerMgr.getCustomerByCustomerNumber( //gets current customer
req.currentCustomer.profile.customerNo
);
var status;
Transaction.wrap(function () { //saves the new customer password and returns status
status = customer.profile.credentials.setPassword(
formInfo.newPassword,
formInfo.currentPassword,
true
);
});