Form Events

The following is the list of the form events and where they happen:

On Controllers

How to Work With Form Events

All these events received an instance of a Da\User\Event\FormEvent. The event receives an instance of a form depending on where its being called. The following is the list of the forms accessible via FormEvent::getForm():

The recommended way to make use of events is by creating a new file in your config folder (i.e. events.php), configure there all your events and then include that file on your entry script.

Here is an example of setting an event for the RecoveryController:

<?php 
// events.php file

use Da\User\Controller\RecoveryController;
use Da\User\Event\FormEvent;
use yii\base\Event;

Event::on(RecoveryController::class, FormEvent::EVENT_BEFORE_REQUEST, function (FormEvent $event) {
    $form = $event->getForm();

    // ... your logic here
});

Now, include events.php file to your entry script (i.e. index.php). The following is taken from the Yii 2 Advanced Application Template:

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');

require(__DIR__ . '/../config/events.php'); // <--- adding events here! :)

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/main.php'),
    require(__DIR__ . '/../../common/config/main-local.php'),
    require(__DIR__ . '/../config/main.php'),
    require(__DIR__ . '/../config/main-local.php')
);

$application = new yii\web\Application($config);
$application->run();

© 2amigos 2013-2019