This bundle provides a basic feedback implementation for Symfony 3 projects., (*1)
Installation
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:, (*2)
$ composer require jairwin/contact-bundle "~1"
This command requires you to have Composer installed globally, as explained
in the installation chapter
of the Composer documentation., (*3)
Step 2: Enable the Bundle
Then, enable the bundle and required bundle by adding them to the list of registered bundles
in the app/AppKernel.php
file of your project:, (*4)
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new EWZ\Bundle\RecaptchaBundle\EWZRecaptchaBundle(),
new JAI\Bundle\ContactBundle\JAIContactBundle(),
);
// ...
}
// ...
}
Step 3: Add Routing
To add the provided routes for /contact and /contact/success update
app/config/routing.yml
:, (*5)
# app/config/routing.yml
jai_contact:
resource: "@JAIContactBundle/Resources/config/routing.yml"
prefix: /
This bundle uses the EZWRecaptchaBundle which is configured in app/config/config.yml
(documentation: EWZRecaptcha on GitHub):, (*6)
``` yaml, (*7)
app/config/config.yml
ewz_recaptcha:
public_key: here_is_your_public_key
private_key: here_is_your_private_key
locale_key: %kernel.default_locale%, (*8)
For development you need to provide separate configuratons using the public test keys everywhere except production (documentation: [Google Recaptcha FAQ](https://developers.google.com/recaptcha/docs/faq)). You could either store the keys in `parameters.yml` or add the `ewz_recaptcha` configurations to `config_dev.yml`, `config_prod.yml`, and `config_test.yml` instead of `config.yml`.
### Step 5: Enable Translations
To get the correct form labels and placeholders enable translation. In a new Symfony3
project it needs to be uncommented in `app/config/config.yml`:
``` yaml
# app/config/config.yml
framework:
translator: { fallbacks: ["%locale%"] }
And set the locale in app/config/parameters.yml
:, (*9)
``` yaml, (*10)
app/config/parameters.yml
locale: en
Note - so far only english translations have been provided in this bundle. Most of
the defaults are rather ugly.
### Step 6: Configure Recipient
This bundle sends all contact emails to a single address. This is configured in
`app/config/parameters.yml`:
``` yaml
# app/config/parameters.yml
# JAI Contact Bundle Configuration
feedback_email: address@yoursite.tld
Using
Once installed and configured the contact form can be reached at the route \contact
. The form uses the
Symfony Forms Component (documentation: Forms from the Symfony Book),
so it will use the form themes (documentation: Form Themes from the Symfony Book)., (*11)
To-Do
Unit Testing
Currently there aren't any unit tests, and that's just not right., (*12)
Better Handling of Configuration
Should probably move feedback_email from parameters.yml to config.yml and add more
configurable settings., (*13)
Flood Control
Could stop some bot attacks before they hit the form in the first place., (*14)
Remove Dependency on EZWRecaptchaBundle
It would be better if there was an optional setting like "use captcha" and then further
settings such as only requiring after a certain amount of flooding, and then specifics
related to whatever captcha implementation is used in the current project., (*15)
Multiple To Addresses
Configure optional topic selection that would allow the user to select a topic for the
feedback that would address the email to different recipients. Some examples:, (*16)
"Website Issues" => "webmaster@domain.tld"
"Billing Issues" => "accounting@domain.tld"
"General Feedback" => "feedback@domain.tld"