Blog

Controller Extension in Salesforce

  • (4.0)
  • | 99 Ratings

Controller Extension in Salesforce


A controller extension is a class of APEX which extends functionality of a custom or standard controller. We use controller extensions:


  • When we want to add new functions.
  • When we want to use a default function and make few changes in the functional flow.
  • When we want to build a VFP that applies for user permissions, even-after a controller extension executes in system mode.


How extensions can help you build advanced Visualforce Pages?


As discussed in the previous articles, Extensions has several benefits, it can have standard & custom controllers. In Extension we can have one standard or custom controller and can have multiple classes. There are various scenarios in which we can use the extension. 

Subscribe to our youtube channel to get new updates..!



Enroll For Instructor-Led Live SalesForce Training at Mindmajix.


Business Scenario


We have a business scenario in which the standard & custom extensions should be explained in the Visualforce Page and the DML including in the Visualforce Page also.


#Apex Class For Business Scenario:


public class MyControllerExtensionExample5Feb{

    public static string message{get;set;} 
    public static string VariableForStoringAccountName {get;set;}
    public MyControllerExtensionExample5Feb(ApexPages.StandardController stdController) {
         //write any code which u want to execute at the start
    }
    public static void ShowGreeting() {
        message = 'Welcome to Extension demo' ;
    }
     public void mysave() {
        Account NewAccount = New Account();
        NewAccount.Name = VariableForStoringAccountName;
        NewAccount.industry = 'Chemical';
        insert NewAccount;
    } 
}

Steps to create a Visualforce Page:


Login to Salesforce → Setup → Build → Develop → Visualforce Pages(Click on it) → Click on New button


#Code for creating a Visualforce Page:


<apex:page standardController="Account" extensions="MyControllerExtensionExample">

    <apex:form >

         <apex:pageBlock title="Page Block 1"> 

            <apex:pageBlockSection title="Page Block Section 1 | Custom Controller Example" Columns="2"> 

                <apex:pageBlockSectionItem ><Apex:commandButton value="Greeting" reRender="id1" Action="{!ShowGreeting}"/></apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem ><Apex:outPutLabel id="id1"> {!message} </Apex:outPutLabel> </apex:pageBlockSectionItem> 

            </apex:pageBlockSection>

        </apex:pageBlock> 

      <apex:pageBlock title="Page Block 2"> 

            <apex:pageBlockSection title="Page Block Section 2 | Standard Controller Example" Columns="2"> 

                <apex:pageBlockSectionItem >New Company:<apex:inputField  value="{!Account.name}" required="False" /></apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem ><apex:commandButton value="Standard Save" action="{!save}"/></apex:pageBlockSectionItem>

            </apex:pageBlockSection>          

        </apex:pageBlock>  

        <apex:pageBlock title="Page Block 3"> 

            <apex:pageBlockSection title="Page Block Section 3 | Using Custom code For Save" Columns="2"> 

                <apex:pageBlockSectionItem >New Company:<apex:inputText value="{!VariableForStoringAccountName}" /></apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem ><apex:commandButton value="Custom Save" action="{!mysave}"/></apex:pageBlockSectionItem>

            </apex:pageBlockSection>          

        </apex:pageBlock>      

    </apex:form>        

</apex:page>

Result:




Explanation of the Code Step By Step - With different sections:


Section - Page Block 1 - Custom Controller Example


  • extensions="MyControllerExtensionExample" [Defines the Apex Class]
  • page standardController="Account" - [The account Name]
  • pageBlock title="Page Block 1" - [The section title]
  • pageBlockSection title="Page Block Section 1 | Custom Controller Example" - [The heading of the section]
  • commandButton value="Greeting" - [The button name]

Checkout SalesForce Tutorial


On pressing the button available on the screen, it will hit the APEX class and retrieve the message saved in it.



Section - Page Block 2 - Standard Controller Example


  • pageBlockSectionItem >New Company:
  • value="{!Account.name}" - [Object in which the data is saved]
  • required="False" - [The data is mandate at the account field to override this we use this function]
  • commandButton value="Standard Save" - [Button name]
  • action="{!save}" - [On button press the data should be saved]

Note: By default, Objects has 2 things that are common, the data and the save, delete, edit, and other functions.


On button press, the data will be saved to the Default “Account” Object.



DML in APEX Class - Section - Page Block 3 - Custom Controller Example


  • pageBlock title="Page Block 1" - [The section title]
  • pageBlockSection title="Page Block Section 3 | Using Custom code For Save" - [The heading of the section]
  • commandButton value="Custom Save" - [Button name]
  • action="{!mysave}" - [On button press the data should be saved]

Checkout Salesforce Interview Questions


Note: On button press, the code hits the Apex Class which is already saved by name “MyControllerExtensionExample5Feb” and with variable  name(binding between the Apex Class & Visualforce Page) “VariableForStoringAccountName”  and executes the code written in it and saves the data in Account Object.




In the next topic, we will discuss in-detail about “Batch Class in Salesforce”. Keep following us for more info on Salesforce Development / Programming.


Explore Salesforce Sample Resumes! Download & Edit, Get Noticed by Top Employers!Download Now!

Mindmajix offers different Salesforce certification training according to your desire with hands-on experience on Salesforce concepts




Subscribe For Free Demo

Free Demo for Corporate & Online Trainings.

Ravindra Savaram
About The Author

Ravindra Savaram is a Content Lead at Mindmajix.com. His passion lies in writing articles on the most popular IT platforms including Machine learning, DevOps, Data Science, Artificial Intelligence, RPA, Deep Learning, and so on. You can stay up to date on all these technologies by following him on LinkedIn and Twitter.


DMCA.com Protection Status

Close
Close