File and directory structure
Note
The content for this page requires a major update. The legacy page contains outdated and potentially inaccurate information. You can still access it in the Mautic Developer Documentation archived repository.
If you’re interested in helping develop the new content for this page and others, consider joining the documentation efforts.
Please read the Contributing Guidelines and Contributing to Mautic’s documentation to get started.
The directory structure of a Plugin varies based on the features implemented.
Plugins require the following structure at a minimum:
HelloWorldBundle/
Config/
config.php
HelloWorldBundle.php
HelloWorldBundle/Config/config.php registers the Plugin with Mautic along with defining routes, menu items, services, and parameters.
The HelloWorldBundle.php file registers the bundle with Symfony’s kernel. Extend the class with Mautic\IntegrationsBundle\Bundle\AbstractPluginBundle.
<?php
// plugins/HelloWorldBundle/HelloWorldBundle.php
namespace MauticPlugin\HelloWorldBundle;
use Mautic\IntegrationsBundle\Bundle\AbstractPluginBundle;
class HelloWorldBundle extends AbstractPluginBundle
{
// Nothing more required
}
An example Plugin directory and file structure may look something like this:
HelloWorldBundle/
Assets/
images/
earth.png
mars.png
css/
helloworld.css
js/
helloworld.js
Config/
config.php
Controller/
WorldController.php
Entity/
World.php
EventListener/
CampaignSubscriber.php
Form/
Type/
WorldType.php
Migrations/
Version_0_0_1.php
Model/
WorldModel.php
Helper/
TravelHelper.php
Security/
Permissions/
WorldPermissions.php
Translations/
en_US/
flashes.ini
messages.ini
Tests/
Unit/
EventListener/
CampaignSubscriberTest.php
Helper/
TravelHelperTest.php
Functional/
Controller/
WorldControllerTest.php
Views/
World/
form.html.php
index.html.php
list.html.php
HelloWorldBundle.php