Events & Hooks

Sprout Forms can be extended using the following Events and Hooks.

# Events

# Before a Form Entry is saved

Raised before an entry is saved.

use barrelstrength\sproutforms\services\Entries;
use barrelstrength\sproutforms\elements\Entry;
use barrelstrength\sproutforms\events\OnBeforeSaveEntryEvent;

public function init()
{
    parent::init();
    
    Event::on(Entries::class, Entry::EVENT_BEFORE_SAVE, function(OnBeforeSaveEntryEvent $event) {
        if (Craft::$app->request->isSiteRequest)
        {
            // A Form Entry Element has been saved from a Front-end Form Submission
            // Access the Form Entry Element via: $event->sender
        }
        
        if (Craft::$app->request->isCpRequest)
        {
            // A Form Entry Element has been updated from the Control Panel
            // Access the Form Entry Element via: $event->sender
        }
    });
}

Params

  • entry – The submitted SproutForms_EntryModel
  • isNewEntry - A boolean indicating whether this is a brand new form entry

# After a Form Entry is Saved

Raised just after an entry is saved

use barrelstrength\sproutforms\elements\Entry;
use yii\base\Event;
use Craft;

public function init()
{
    parent::init();
    
    Event::on(Entry::class, Entry::EVENT_AFTER_SAVE, function(Event $event) {
        
        if (Craft::$app->request->isSiteRequest)
        {
            // The Form Entry Element is available via the $event->sender attribute     
            $formEntryElement = $event->sender;
        }
        
        if (Craft::$app->request->isCpRequest)
        {
            $formEntryElement = $event->sender;
        }
        
    });
}

Params

  • entry – The submitted SproutForms_EntryModel
  • isNewEntry - A boolean indicating whether this is a brand new form entry

# Hooks

# Template Hook

The sproutForms.modifyForm Template Hook gives plugins a chance to dynamically add content to a form template. The hook will output content between the <form> tags when using the displayForm tag.

public function init()
{
    parent::init();
    
    Craft::$app->view->hook('sproutForms.modifyForm', function(&$context) {
        
         // Prepare HTML for your template
    
        return $html;
    });
}