---
title: Callbacks
---

# Callbacks

<div class="documentation__toc"></div>

## Introduction

There are a number of [callbacks](../core-concepts/callbacks) available in the Streams Platform designed to help you extend core functionality.


## Addon Callbacks

### Registered

The `registered` callback fires immediately after the addon is registered but before the addon `boot` process which follows the `register` process.

```php
$module->on('registered', function() {
    // Do something after registering.
});
```


## Addon Management

### Module Installing

The `installing` callback is fired after a module is installing. The installing `module` is passed to the callback.

```php
$module->on('installing', function() {
    // Do something before installing.
});
```

### Module Installed

The `installed` callback is fired after a module is installed. The installed `module` is passed to the callback.

```php
$module->on('installed', function() {
    // Do something after installing.
});
```

### Module Uninstalling

The `uninstalling` callback is fired after a module is uninstalling. The uninstalling `module` is passed to the callback.

```php
$module->on('uninstalling', function() {
    // Do something before uninstalling.
});
```

### Module Uninstalled

The `uninstalled` callback is fired after a module is uninstalled. The uninstalled `module` is passed to the callback.

```php
$module->on('uninstalled', function() {
    // Do something after uninstalling.
});
```

### Module Migrating

The `migrating` callback is fired after a module is migrating. The migrating `module` is passed to the callback.

```php
$module->on('migrating', function() {
    // Do something before migrating.
});
```

### Module Migrated

The `migrated` callback is fired after a module is migrated. The migrated `module` is passed to the callback.

```php
$module->on('migrated', function() {
    // Do something after migrating.
});
```

### Extension Installing

The `installing` callback is fired after a extension is installing. The installing `extension` is passed to the callback.

```php
$extension->on('installing', function() {
    // Do something before installing.
});
```

### Extension Installed

The `installed` callback is fired after a extension is installed. The installed `extension` is passed to the callback.

```php
$extension->on('installed', function() {
    // Do something after installing.
});
```

### Extension Uninstalling

The `uninstalling` callback is fired after a extension is uninstalling. The uninstalling `extension` is passed to the callback.

```php
$extension->on('uninstalling', function() {
    // Do something before uninstalling.
});
```

### Extension Uninstalled

The `uninstalled` callback is fired after a extension is uninstalled. The uninstalled `extension` is passed to the callback.

```php
$extension->on('uninstalled', function() {
    // Do something after uninstalling.
});
```

### Extension Migrating

The `migrating` callback is fired after a extension is migrating. The migrating `extension` is passed to the callback.

```php
$extension->on('migrating', function() {
    // Do something before migrating.
});
```

### Extension Migrated

The `migrated` callback is fired after a extension is migrated. The migrated `extension` is passed to the callback.

```php
$extension->on('migrated', function() {
    // Do something after migrating.
});
```


## Form Builders

### Ready

The `ready` callback is fired when form builder is ready and about to start the build process. The form `builder` is passed to the callback.

```php
$form->on('ready', function() {
    // Ready to build
});
```

### Built

The `built` callback is fired after the form builder has been built but not yet handled the request. The form `builder` is passed to the callback.

```php
$form->on('built', function() {
    // Built and ready
});
```

### Post

The `post` callback is fired after the form builder has been built and is about to handle the POST request. The form `builder` is passed to the callback.

```php
$form->on('post', function() {
    // About to handle a post request
});
```

### Posting

The `posting` callback is fired just before handling the POST request. The form `builder` is passed to the callback.

```php
$form->on('posting', function() {
    // About to handle a post request
});
```

### Posted

The `posted` callback is fired just after handling the POST request. The form `builder` is passed to the callback.

```php
$form->on('posted', function() {
    // Post request has been made and handled
});
```

### Validating

The `validating` callback is fired just before validating the form. The form `builder` is passed to the callback.

```php
$form->on('validating', function() {
    // About to validate form data
});
```

### Validated

The `validated` callback is fired just after validating the form. The form `builder` is passed to the callback.

```php
$form->on('validated', function() {
    // Form data has been validated
});
```

### Saving

The `saving` callback is fired just before saving the form entry. The form `builder` is passed to the callback.

```php
$form->on('saving', function() {
    // About to save the form entry
});
```

### Saved

The `saved` callback is fired just after saving the form entry. The form `builder` is passed to the callback.

```php
$form->on('saved', function() {
    // Form entry has been saved
});
```

### Make

The `make` callback is fired after the form builder has been built and POST request handled but before making a view response if applicable. The form `builder` is passed to the callback.

```php
$form->on('make', function() {
    // About to make the form's response
});
```

## Multiple Form Builder

[Multiple form builders](../ui/forms/multiple-forms) inherit all of the callbacks from normal standard builders.

### Saving Child Form

The `saving_{$slug}` callback is fired just before saving the child form entry. The child form `builder` is passed to the callback.

```php
$form->on('saving_example', function() {
    // About to save the "example" form.
});
```

### Saved Child Form

The `saved_{$slug}` callback is fired just after saving the child form entry. The child form `builder` is passed to the callback.

```php
$form->on('saved_example', function() {
    // Just saved the "example" form.
});
```

### Versioning

The `versioning` callback is fired just after a child form is built that is loading a versioned entry in place of the original entry. This allows you to distribute the versioned model data to other child forms.

```php
$form->on('versioning', function(MultipleFormBuilder $builder, VersionInterface $version) {
    $builder->setChildFormEntry(
        'entry',
        $version
            ->getModel()
            ->getAttribute('entry')
    );
});
```


## Table Builders

### Querying

The `querying` callback is fired at the beginning of the query process for table builders. The table `builder` instance and the `query` builder object are passed to the callback.

```php
$table->on('querying', function(Builder $query) {
    // About to query for the table entries
});
```

### Queried

The `queried` callback is fired after the query process but before returning results for table builders. The table `builder` instance and the `query` builder object are passed to the callback.

```php
$table->on('queried', function(Builder $query) {
    // About to get entries from query builder 
});
```

### Row Deleted

The `row_deleted` callback is fired after a table row has been deleted using the `delete` action. The table `builder`, `model`, and row `entry` are all passed to the callback.

```php
$table->on('row_deleted', function(EntryInterface $entry) {
    \Log::info($entry->getId() . ' was deleted.');
});
```

### Rows Deleted

The `rows_deleted` callback is fired after all table rows are deleted when using the `delete` action. The table `builder`, `model`, and deleted `count` are all passed to the callback.

```php
$table->on('rows_deleted', function($count) {
    \Log::info($count . " records were deleted by {auth()->user()->getUsername()}.");
});
```

### Reordered

The `reordered` callback is fired after table rows are reordered when using the `reorder` action. The table `builder`, `model`, and row `count` are all passed to the callback.

```php
$table->on('reordered', function() {
    cache()->clear();
});
```


## Tree Builders

### Querying

The `querying` callback is fired at the beginning of the query process for tree (list) builders. The tree `builder` instance and the `query` builder object are passed to the callback.

```php
$tree->on('querying', function(Builder $query) {
    // About to query for the table entries
});
```
