Un accusé de réception pour les demandes de contact

Le code suivant permet d'envoyer un accusé de réception aux demandes de contact, lorsque le formulaire est géré par Icybee. Pour cela, une fonction de rappel est attaché à l'évènement Icybee\Modules\Forms\PostOperation::process, qui se déclenche lorsque l'opération post du module Forms est accomplie avec succès.

Fonction de rappel

Comme souvent pour les fonctions de rappel de la configuration hooks, la fonction est définie dans la classe Hooks de notre application :

<?php

# protected/all/lib/hooks.php

namespace Website;

use ICanBoogie\Mailer;
use ICanBoogie\Operation\ProcessEvent;

class Hooks
{
    static public function on_contact_request(ProcessEvent $event, \Icybee\Modules\Forms\PostOperation $target)
    {
        global $core;

        if ($target->record->modelid != 'contact')
        {
            return;
        }

        $core->mailer(array(

            Mailer::T_DESTINATION => $event->request['email'],
            Mailer::T_FROM => 'no-reply@weirdog.com',
            Mailer::T_MESSAGE => "Bonjour, Votre demande a bien été prise en compte. Nous revenons vers vous dans les meilleurs délais.",
            Mailer::T_SUBJECT => "Votre demande de contact sur weirdog.com"

        ));
    }
}

On utilise le type de modèle du formulaire pour différencier le formulaire de contact des autres formulaires du site. On pourrait utiliser l'instance du formulaire $target->form instanceof … ou son identifiant $target->record->nid == ….

Attacher la fonction de rappel à l'évènement

Pour attacher la fonction de rappel à l'évènement Icybee\Modules\Forms\PostOperation::process il convient d'ajouter une ligne à la configuration hooks :

<?php

# protected/all/config/hooks.php

namespace Website;

$hooks = __NAMESPACE__ . '\Hooks::';

return array
(
    'events' => array
    (
        'Icybee\Modules\Forms\PostOperation::process' => $hooks . 'on_contact_request'
    )
);

On oubliera pas de vider le cache de configuration si celui-ci est activé, et c'est prêt !

Laisser un commentaire

Pas de commentaire