2

The requirement is to show some messages after Save. Messages would depend on the fields entered for custom object record. The best way which I figured would be to override the standard Save button on the custom object to a visualforce page which would display appropriate messages and then perform save. Not sure how to do that. Please help.

4 Answers 4

2

Add a field, hidden, of course, that should be set when a message should be displayed. Then, add a hidden Visualforce page to the layout that should reset the flag and show a message when appropriate. The flag can be set from a trigger.

trigger X on Y (before insert, before update) {
    for(Y r: Trigger.new) {
        r.Flag__c = r.Field__c == 'Some Value';
    }
}

Page:

<apex:page standardcontroller="Y" extensions="yExt" action="{!resetFlag}">
    <script>
    if({!showmessage}) {
        alert("Some informational dialog");
    }
    </script>
</apex:page>

Extension:

public class yExt {
    ApexPages.StandardController c;
    public Boolean showMessage { get; set; }
    public yExt(ApexPages.StandardController ctrl) {
        c = ctrl;
        showMessage = ((Y)ctrl.getRecord()).Flag__c;
    }
    public void resetFlag() {
        ((Y)c.getRecord()).Flag__c = false;
        c.save();
    }
}

Drop this into a page layout with a zero-height frame (will make it effectively invisible), and you've got your message alert.

This is only a very basic framework; you might want to make some adjustments based on your exact requirements.

0

The save button in the standard layout cannot be override. But you can still built a VF page and place your own buttons. But as the above answer says its gonna take whole lot of coding.

All the best.

0

Sort of depends, your question is a little confusing. On the Detail view page of the object is where you ultimately need to see the message, post-save correct? Since that's the "view" page of the record, see if this will help.

  1. I've done something like this in the past to show more of a "current state of the record" and if you want there to be colors you can use images/icons to make it stand out. So it always shows, might be even better than showing something just after save. Here's how: Create a Formula field to check your fields, and output some text/images or not.

  2. Same idea as above, always showing for the detail/view page. This time create an inline VF page and drop it on the layout. Then you can show anything you want here. (http://blog.jeffdouglas.com/2009/05/08/inline-visualforce-pages-with-standard-page-layouts/)


If you are wanting to show "Field validation errors" upon "click" of the save button and give the user the ability to fix and re-save, then you need to create Validation Rules. https://help.salesforce.com/apex/HTViewHelpDoc?id=fields_defining_field_validation_rules.htm

If the validation rules don't work, sometimes you need to reference other objects, then you need a before insert/update trigger.


If you literally want to display a message ONLY upon successful save, then you need to override the entire Edit page of the record. Lot of work here, but that's how to do it.

1
  • The edit page wouldn't be appropriate for a successful-save message, exactly. That's more work than what's needed. But formulas are quite useful, and might do the trick.
    – sfdcfox
    Apr 9, 2015 at 5:04
-1

You can't override the Save button unless you override the whole Edit layout, which is not a best practice and there is a lot of effort involved to re-build it. Also it's not scalable for new fields, related lists etc.

I would rather recommend writing a before insert/before update trigger on the Account object that will throw errors accordingly to the record or a particular field.

4
  • Actually, there's very little work to re-build it. I did so using the REST API (describe layout/record type), and about 100 lines of code. Non-trivial, yes, but not as hard as one might imagine. And, edit pages don't use related lists. OP wants an informational message, not an error.
    – sfdcfox
    Apr 9, 2015 at 5:02
  • True regarding the related list, my bad :). Although why would you re-build the layout when a simple trigger can do the job? At the end of the day it's the business/dev call which approach they take. I always tend to use the KISS method as much as I can Apr 9, 2015 at 5:08
  • I wouldn't rewrite the layout for that purpose. We used this technique to add a real-time address validation popup. The layout was hard coded, so I made it dynamic. Regarding triggers, though, they can't show informational messages, only errors. So, triggers work in some cases, not all.
    – sfdcfox
    Apr 9, 2015 at 5:16
  • Totally agree. I would rebuild the layout for fancy validations and popus etc, though in this case he's after standard error messages (validation style), hence I think a trigger will work better in this scenario Apr 9, 2015 at 5:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .