wouterj/bundleless

Removing the bundle from AppBundle in Symfony

dev-master / 1.0.x-dev 2015-05-05 14:19 UTC

This package is auto-updated.

Last update: 2024-10-25 01:14:47 UTC


README

This is a very simple proof of concept. This package basically provides a bundle class which can be used to create "virtual" bundles. Virtual bundles only exists for the Symfony kernel, but for you it's just a package which uses bundle conventions (like automatic mapping for Entity/).

This can be used to remove the "bundle" from AppBundle. Let me tell you how to get this working for your application.

Install

This is pretty simple (if you're using Composer):

$ composer require wouterj/bundleless:1.*@dev

Edit

Use the new WouterJ\Bundleless\AppFocusedKernel as parent of your AppBundle:

// app/AppKernel.php

use WouterJ\Bundleless\AppFocusedKernel;

// ...
class AppKernel extends AppFocusedKernel
{
}

Then, remove that ugly AppBundle register line from your AppKernel. Bundeless will take care of it now.

// app/AppKernel.php

// ...
public function registerBundles()
{
    $bundles = array(
        // ...
        // comment or remove
        // new AppBundle\AppBundle();
}

Use

You're already ready! You should move your application code outside of the AppBundle by removing the namespace and putting it in src/ directly. For instance:

// src/Controller/StaticController.php
namespace App\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class StaticController extends Controller
{
    /**
     * @Route("/")
     */
    public function homepageAction()
    {
        return $this->render('static/homepage.html.twig');
    }
}
# app/config/routing.yml
app:
    resource: "@App/Controller"
    type: annotation

That's it. Apart from the template file, you now have a working homepage!

Customize

The AppBundle is created using the Kernel#getAppBundle() method. Override this method in your AppKernel to customize it.

License

This project is released under the MIT license, it's just 2 files anyway.