Provides simple contact form rendered by twitter-bootstrap view helper for ZF2 with Doctrine


Build Status Coverage Status Scrutinizer Code Quality SensioLabsInsight HHVM Status Dependency Status

Latest Stable Version Latest Unstable Version Total Downloads License


  • This module provides a contact form based on ZF2 and Doctrine2.
  • Submitted contact forms will persist in repository.
  • Captcha support is provided to force submitting by humans.
  • Views are twitter-Bootstrap compatible.


The recommended way to install mamuz/mamuz-contact is through composer by adding dependency to your composer.json:

    "require": {
        "mamuz/mamuz-contact": "*"

After that run composer update and enable this module for ZF2 by adding MamuzContact to modules in ./config/application.config.php:

// ...
    'modules' => array(

This module is based on DoctrineORMModule and be sure that you have already configured database connection.

Create database tables with command line tool provided by DoctrineORMModule:

./vendor/bin/doctrine-module orm:schema-tool:update


This module is usable out of the box, but you can overwrite default configuration by adding a config file in ./config/autoload directory. For default configuration see module.config.php

Captcha Support

Create a new config file and place it to ./config/autoload directory and insert configuration array for Zend Captcha form element factory. Array must be indexed by key captcha, for e.g.:

return array(
    'captcha' => array(
        'type'       => 'Zend\Form\Element\Captcha',
        'name'       => 'captcha',
        'options'    => array(
            'label'   => 'Please verify you are human',
            'captcha' => array(
                'class'   => 'recaptcha',
                'options' => array(
                    'pubkey'  => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
                    'privkey' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'attributes' => array(
            'required' => 'required'

Requirement for Google ReCaptcha WebService

Register your domain to Google ReCaptcha WebService to create a private key and a public key. Be sure that private key will not commit to VCS.


After filtering and validation of user input a new contact entity will persist in repository MamuzContact.


For the sake of simplicity Event is used for FQN MamuzContact\EventManager\Event.

The following events are triggered by Event::IDENTIFIER mamuz-contact:

Name Constant Description
persist.pre Event::PRE_PERSISTENCE Before contact entity persistence Event::POST_PERSISTENCE After contact entity persistence