How to create a Bundle?

A Bundle is created by the command

app/console init:bundle ‘<Namespace>’ <directory normally below src>
app/console init:bundle ‘Vendor’ HelloBundle
A new directory was created at:


When you activate a Bundle you have to tell the system, in which directory(s) the classes of the Bundles are stored.

This is done by the app/autoload.php.

The function registerNamespaces the array is enlarged by the registered directories.

    'Mapbender'        => __DIR__.'/../mapbender/src'

The row means that the system will look for the namespace Mapbender at first in the directory Mapbender below mapbender/src.

In this case the class Mapbender\CoreBundle\Component\Element should be loaded.

Also the namespace-component (devided by ) will be interpreted as a directory name and the closing classname (Element) will be interpreted as a file. So in this case Element.php will be expected.

How to activate a Bundle?

The Bundle will be activated in the file app/AppKernel.php. You have to add the Bundle to the array $bundles:

$bundles = array(
 new Mapbender\CoreBundle\MapbenderCoreBundle(),
 new Mapbender\WmsBundle\MapbenderWmsBundle(),

 new Vendor\VendorHelloBundle()

How to activate the Routings?

The routing is a mapping of URLs (for example / or /application) to the call of a Controller from a Bundle. To do so you have to edit the file app/config/routing.yml. At the moment Mapbender3 uses the following way:


   resource: "@MapbenderCoreBundle/Controller/WelcomeController.php"
   type: annotation

This means: Parse the mentioned file and look for Route-Annotations, which refer to funtcions.

namespace Mapbender\CoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
// annotations are imported to Symfony like classes. This is why you have to use the following call:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

 * Welcome controller.
 * @author Christian Wygoda <>
class WelcomeController extends Controller {
        * @Route("/", name="mapbender_welcome")
        * @Template()
   public function indexAction() {
       //TODO: Get ORM Applications, too
       $apps = $this->getYamlApplications();
       return array(
           'apps' => $apps
// ...

How to activate a new Element for the administration interface

When you wrote a new functionality for Mapbender3 your new element will not show up in the administration.

You have to register it first in

  • mapbender/src/Mapbender/CoreBundle/MapbenderCoreBundle.php
public function getElements()
    return array(


Now your element should show up in the element list.