Lightning is different from apex, for apex developers it's very tough to get into it.
But salesforce coding is all about reading values from front end to back end and vice versa...
Task 1: Set default value dynamically in Lightning components
Component:
---------
<aura:component implements="flexipage:availableForAllPageTypes,force:appHostable" access="global">
<aura:attribute name="FirstName" type="String"/>
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<ui:inputText class="slds-lookup__search-input slds-input leftPaddingClass" value="{!v.FirstName}" placeholder="search.."/>
<p>{!'Name of Salesforce CEO is ' + v.FirstName}</p>
</aura:component>
JavaScript controller:
---------------------
({
doInit: function(component,event,helper){
component.set("v.FirstName", "Mark benioff");
}
})
Task 2: Develop custom opportunity page using Lightning components, You can replace this component with standard New button.
Apex Class:
----------
public class CreateoppRecord {
@AuraEnabled
public static Opportunity createRecord(Opportunity oppobj){
try{
if(oppobj != null){
insert oppobj;
}
}catch (Exception ex){
System.debug('Exception -->'+ex);
}
return oppobj;
}
}
Component:
---------
<aura:component implements="lightning:actionOverride,flexipage:availableForRecordHome,force:hasRecordId" access="global" controller="CreateoppRecord">
<ltng:require styles="/resource/bootstrap/css/bootstrap.min.css"
scripts="/resource/bootstrap/js/jquery.js,/resource/bootstrap/js/bootstrap.min.js"/>
<aura:attribute name="oppobj" type="Opportunity" default="{'sobjectType': 'opportunity',
'Name': '',
'Amount': '',
'StageName': 'Prospecting',
'CloseDate': ''
}"/>
<div class="slds-modal slds-fade-in-open">
<div class="slds-modal__container">
<div class="slds-modal__header">
<h2 class="slds-text-heading--medium">New Opportunity</h2>
</div>
<div class="slds-modal__content slds-p-around--medium slds-grid slds-wrap ">
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<label>Opportunity Name</label>
<ui:inputText class="form-control" value="{!v.oppobj.Name}"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<label>Amount</label>
<ui:inputText class="form-control" value="{!v.oppobj.Amount}"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputDate aura:id="closedate" label="Close Date" class="field" value="{!v.oppobj.CloseDate}" displayDatePicker="true"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputSelect aura:Id="stagename" multiple="false" label="Stage" class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputSelectOption label="Prospecting" text="Prospecting" value="true"/>
<ui:inputSelectOption label="Qualification" text="Qualification"/>
<ui:inputSelectOption label="Closed Won" text="Closed Won"/>
<ui:inputSelectOption label="Value Proposition" text="Value Proposition"/>
<ui:inputSelectOption label="Needs Analysis" text="Needs Analysis"/>
</ui:inputSelect> <br/>
</div>
</div>
<div class="slds-modal__footer">
<lightning:button variant="neutral" label="Cancel" onclick="{!c.cancel}"/>
<lightning:button variant="brand" label="Submit" onclick="{!c.saverecord}" />
</div>
</div>
</div>
</aura:component>
JavaScript controller:
---------------------
({
saverecord : function(component, event, helper) {
var Opportunity = component.get("v.oppobj");
if($A.util.isEmpty(Opportunity.Name) || $A.util.isUndefined(Opportunity.Name)){
alert('Opportunity Name is Required');
return;
}
var stagenm = component.find("stagename");
if($A.util.isEmpty(stagenm) || $A.util.isUndefined(stagenm)){
alert('Stage Name is Required');
return;
}
if($A.util.isEmpty(Opportunity.CloseDate) || $A.util.isUndefined(Opportunity.CloseDate)){
alert('Close Date is Required');
return;
}
component.set("v.oppobj.StageName", stagenm.get("v.value"));
var opprec = component.get("v.oppobj");
var action = component.get("c.createRecord");
action.setParams({"oppobj": opprec});
action.setCallback(this,function(a){
var state = a.getState();
if(state == "SUCCESS"){
var oppId = a.getReturnValue().Id;
var newopp = {'sobjectType': 'opportunity',
'Name': '',
'Amount': '',
'StageName': '',
'CloseDate': ''
};
component.set("v.oppobj",newopp);
// .reload();
window.location.href = '/lightning/r/Opportunity/'+oppId+'/view' ;
} else if(state == "ERROR"){
alert('Error in calling server side action');
}
});
$A.enqueueAction(action);
},
cancel : function(component, event, helper) {
history.go(-1);
}
})
But salesforce coding is all about reading values from front end to back end and vice versa...
Task 1: Set default value dynamically in Lightning components
Component:
---------
<aura:component implements="flexipage:availableForAllPageTypes,force:appHostable" access="global">
<aura:attribute name="FirstName" type="String"/>
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<ui:inputText class="slds-lookup__search-input slds-input leftPaddingClass" value="{!v.FirstName}" placeholder="search.."/>
<p>{!'Name of Salesforce CEO is ' + v.FirstName}</p>
</aura:component>
JavaScript controller:
---------------------
({
doInit: function(component,event,helper){
component.set("v.FirstName", "Mark benioff");
}
})
Task 2: Develop custom opportunity page using Lightning components, You can replace this component with standard New button.
Apex Class:
----------
public class CreateoppRecord {
@AuraEnabled
public static Opportunity createRecord(Opportunity oppobj){
try{
if(oppobj != null){
insert oppobj;
}
}catch (Exception ex){
System.debug('Exception -->'+ex);
}
return oppobj;
}
}
Component:
---------
<aura:component implements="lightning:actionOverride,flexipage:availableForRecordHome,force:hasRecordId" access="global" controller="CreateoppRecord">
<ltng:require styles="/resource/bootstrap/css/bootstrap.min.css"
scripts="/resource/bootstrap/js/jquery.js,/resource/bootstrap/js/bootstrap.min.js"/>
<aura:attribute name="oppobj" type="Opportunity" default="{'sobjectType': 'opportunity',
'Name': '',
'Amount': '',
'StageName': 'Prospecting',
'CloseDate': ''
}"/>
<div class="slds-modal slds-fade-in-open">
<div class="slds-modal__container">
<div class="slds-modal__header">
<h2 class="slds-text-heading--medium">New Opportunity</h2>
</div>
<div class="slds-modal__content slds-p-around--medium slds-grid slds-wrap ">
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<label>Opportunity Name</label>
<ui:inputText class="form-control" value="{!v.oppobj.Name}"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<label>Amount</label>
<ui:inputText class="form-control" value="{!v.oppobj.Amount}"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputDate aura:id="closedate" label="Close Date" class="field" value="{!v.oppobj.CloseDate}" displayDatePicker="true"/>
</div>
<div class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputSelect aura:Id="stagename" multiple="false" label="Stage" class="slds-size--1-of-1 slds-p-horizontal_x-small">
<ui:inputSelectOption label="Prospecting" text="Prospecting" value="true"/>
<ui:inputSelectOption label="Qualification" text="Qualification"/>
<ui:inputSelectOption label="Closed Won" text="Closed Won"/>
<ui:inputSelectOption label="Value Proposition" text="Value Proposition"/>
<ui:inputSelectOption label="Needs Analysis" text="Needs Analysis"/>
</ui:inputSelect> <br/>
</div>
</div>
<div class="slds-modal__footer">
<lightning:button variant="neutral" label="Cancel" onclick="{!c.cancel}"/>
<lightning:button variant="brand" label="Submit" onclick="{!c.saverecord}" />
</div>
</div>
</div>
</aura:component>
JavaScript controller:
---------------------
({
saverecord : function(component, event, helper) {
var Opportunity = component.get("v.oppobj");
if($A.util.isEmpty(Opportunity.Name) || $A.util.isUndefined(Opportunity.Name)){
alert('Opportunity Name is Required');
return;
}
var stagenm = component.find("stagename");
if($A.util.isEmpty(stagenm) || $A.util.isUndefined(stagenm)){
alert('Stage Name is Required');
return;
}
if($A.util.isEmpty(Opportunity.CloseDate) || $A.util.isUndefined(Opportunity.CloseDate)){
alert('Close Date is Required');
return;
}
component.set("v.oppobj.StageName", stagenm.get("v.value"));
var opprec = component.get("v.oppobj");
var action = component.get("c.createRecord");
action.setParams({"oppobj": opprec});
action.setCallback(this,function(a){
var state = a.getState();
if(state == "SUCCESS"){
var oppId = a.getReturnValue().Id;
var newopp = {'sobjectType': 'opportunity',
'Name': '',
'Amount': '',
'StageName': '',
'CloseDate': ''
};
component.set("v.oppobj",newopp);
// .reload();
window.location.href = '/lightning/r/Opportunity/'+oppId+'/view' ;
} else if(state == "ERROR"){
alert('Error in calling server side action');
}
});
$A.enqueueAction(action);
},
cancel : function(component, event, helper) {
history.go(-1);
}
})
Thank you.. Sure I will share my new findings
ReplyDeleteAn fantastic article with lot of valuable information just it looks awesome.
ReplyDeleteAngularJS training in chennai | AngularJS training in anna nagar | AngularJS training in omr | AngularJS training in porur | AngularJS training in tambaram | AngularJS training in velachery
The Information which you provided is very much useful for students. Thank You for Sharing Valuable Information.i like this blog and this is very informative.
ReplyDeleteCyber Security Training Course in Chennai | Certification | Cyber Security Online Training Course | Ethical Hacking Training Course in Chennai | Certification | Ethical Hacking Online Training Course |
CCNA Training Course in Chennai | Certification | CCNA Online Training Course | RPA Robotic Process Automation Training Course in Chennai | Certification | RPA Training Course Chennai | SEO Training in Chennai | Certification | SEO Online Training Course
Thank you
DeleteI have recently enrolled in Salesforce learning glad to found your blog. It will be helpful for me.
ReplyDelete