function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
SK9SK9 

Web to Lead form in lightning using force.com sites

Lightning form in force.com sites not inserting lead records. I had to create a Web to lead form in lightning and host it in force.com sites. Since force.com sites can include only visualforce pages, I created a VF page and included a lightning component in it. When I submit the form via force.com sites, it does not insert the record and no error is returned. However, if I host this same lightning component as a standalone component on Account layout, the records are getting inserted.

Visualforce page -
<apex:page standardStylesheets="false" showHeader="false" sidebar="false" standardController="Lead" >
   <apex:includeLightning />
    <div id="lightning" />
    <script>
    $Lightning.use("c:InquiryFormApp",    // name of the Lightning app
        function() {                  // Callback once framework and app loaded
            $Lightning.createComponent(
                "c:createLeadRecord", // top-level component of your app
                { },                  // attributes to set on the component when created
                "lightning",   // the DOM location to insert the component
                function(cmp) {
                    // callback when component is created and active on the page
                }
            );
        },
        '/AppInquiry'  // Community endpoint
    );
</script>                                              
</apex:page>

Lightning App -

<aura:application access="GLOBAL" extends="ltng:outApp" implements="ltng:allowGuestAccess">
    <aura:dependency resource="c:createLeadRecord"/> 
</aura:application>


Lightning component -

<!-- Include Static Resource-->

<!-- Define Attribute-->
<aura:attribute name="candidate" type="Lead" default="{'sobjectType': 'Lead',
                     'LastName': ''
                   }"/>
<div class="container-fluid">
    <h3>Please Enter The Candidate Information</h3>

    <div class="form-group">
        <label>Last Name</label>
        <ui:inputText class="form-control" value="{!v.candidate.LastName}"/>
    </div>


</div>
<div class="col-md-4 text-center">
    <ui:button class="btn btn-default" press="{!c.create}">Create</ui:button>

Lightning component controller -
({
    create : function(component, event, helper) {
        console.log('Create record');
        //getting the candidate information
        var candidate = component.get("v.candidate");
        //Calling the Apex Function
        var action = component.get("c.createRecord");
        //Setting the Apex Parameter
        action.setParams({
            candidate : candidate
        });

        //Setting the Callback
        action.setCallback(this,function(a){
            //get the response state
            var state = a.getState();
            //check if result is successfull
            if(state == "SUCCESS"){
                //Reset Form
                var newCandidate = {'sobjectType': 'Lead',
                                    'LastName': ''
                                   };
                //resetting the Values in the form
                component.set("v.candidate",newCandidate);
                alert('Record is Created Successfully');
            } else if(state == "ERROR"){
                alert('Error in calling server side action');
            }
        });

        //adds the server-side action to the queue        
        $A.enqueueAction(action);

    }
})

Apex controller -
global class CreateLeadRecord {
    /**
   * Create a new lead Record
   *
   * @param Lead candidate  candidate record to be inserted
   * 
   */  
    @AuraEnabled
    public static void createRecord (Lead candidate){

        try{
            System.debug(': CreateCandidateRecord::createRecord::candidate'+candidate);

            if(candidate != null){
                insert candidate;
            }

        } catch (Exception ex){
            system.debug(': exception is-'+ex.getMessage());
        }
        //return candidate.Id;
    }
Please suggest something by which I'll be able to create a Web to Lead form using Lightning and Force.com Sites.