Un plugin de formulaire de contact

Ce plugin fournit un formulaire de contact basique qui vous envoie les informations du contact par email, et les stocke dans la base de données au cas où un problème survienne lors de l’envoi de l’email. Il reprend le principe d’un précédent article de Formation CakePHP.

Il est disponible sur github : http://github.com/msadouni/cakephp-contact-plugin/tree/master

Une fois l’email envoyé, il redirige vers une page de remerciement sur laquelle vous pouvez inclure un code de suivi Google Analytics pour suivre le taux de conversion de vos campagnes AdWords.

Installation

Le plugin peut s’installer automatiquement si vous disposez du logiciel de gestion de sources Git, ou bien en décompressant une archive des sources dans votre application.

Avec Git Clone

Dans le répertoire plugins tapez

git clone git://github.com/msadouni/cakephp-contact-plugin.git contact

En tant que sous-module Git (idéal si votre application est déjà versionnée avec Git)

Dans votre répertoire racine tapez

git submodule add git://github.com/msadouni/cakephp-meioupload-plugin.git plugins/contact
git submodule init
git submodule update

Manuellement

Téléchargez une archive des sources sur github : http://github.com/msadouni/cakephp-contact-plugin/zipball/master et décompressez la dans plugins/contact

Utilisation

  1. Importez le SQL du fichier plugins/contact/config/sql/contact.sql dans votre base
  2. Dans config/bootstrap.php ou un fichier de configuration, indiquez l’email sur lequel vous souhaitez recevoir les contacts
    Configure::write('Contact.email', 'you@example.com');
  3. Pour utiliser la traduction française, ajoutez
    Configure::write('Config.language', 'fre');
    au fichier config/bootstrap.php ou à un fichier de configuration.
  4. Le formulaire est par défaut accessible à l’adresse /contact/contacts/add

Paramétrage

Vous pouvez ajouter une route personnalisée au fichier config/routes.php

Router::connect('/contact', array(
    'plugin' => 'contact',
    'controller' => 'contacts',
    'action' => 'add'));
Router::connect('/contact/merci', array(
    'plugin' => 'contact',
    'controller' => 'contacts',
    'action' => 'thanks'));

Des vues et css basiques sont fournies. Vous pouvez les remplacer en créant des vues pour le formulaire et la page de remerciements dans views/plugins/contact/views/add.ctp et views/plugins/contact/views/thanks.ctp. La vue de remerciement fournie est uniquement destinée au développement, vous devrez créer la vôtre pour une utilisation en production.

Amélioration

Si vous repérez un bug ou souhaitez apporter des modifications au plugin, n’hésitez pas à vous inscrire sur github, créer votre fork du projet et me soumettre les modifications !

Matthieu Sadouni

Articles connexes

Commentaires

[...] Un plugin de formulaire de contact [...]

Bonjour Matthieu,

Un plugin efficace, qui fait ce qu’on lui demande… et qui me parait une base simple de découverte de création d’un plugin. Je me lance dans cette voie :o )

Juste un petit soucis, je ne suis pas encore rentré dans le détail du code, la configuration « française » ne fonctionne pas : Configure::write(‘Config.language’, ‘fre’);

J’ai peut être cassé/oublié quelque chose dans la configuration de cake… rien de méchant en tout cas !

J’utilise cette méthode pour définir une langue, dans le book ils en proposent une autre :

$this->L10n = new L10n();
$this->L10n->get("fre");

Peut-être qu’avec ces lignes dans le beforeFilter() de ton AppController cela fonctionnera.

Participez

Pour insérer une portion de code, utilisez <pre lang="php">...</pre>