Categories are a way to organize Mautic elements. Mautic has a CategoryBundle that you can leverage to incorporate Categories into your Plugin.

Adding Categories

You can add Categories through your Plugin’s config.php file by adding the following as a key to the returned config array:


'categories' => [
    'plugin:helloWorld' => ''

Please prefix Category keys with plugin: as it determines permissions to manage Categories. The helloWorld should match the permission class name.

Configuring Categories for Routes

There is no need to add custom routes for Categories, however, when generating a URL to the Plugin’s Category list, use the following code:


$categoryUrl = $router->generateUrl('mautic_category_index', ['bundle' => 'plugin:helloWorld']);

Including Categories in Forms

To add a Category select list to a Form, use category as the Form type and pass bundle as an option:


$builder->add('category', 'category', [
    'bundle' => 'plugin:helloWorld'

Restricting Category Management

To restrict access to Categories, use the following in the Plugin’s Permission class.

In __construct(), add $this->addStandardPermissions('categories');, then in buildForm(), add $this->addStandardFormFields('helloWorld', 'categories', $builder, $data);.

See a code example in Roles and Permissions.

The two standard helper methods add the permissions of view, edit, create, delete, publish, and full for Categories.