Generate Symfony2 code from the command line!

Because Symfony2 is awesome. Download

    <?php
    // AcmeDemoBundle/Skeleton/Controller/Controller.php

    namespace {{ bundleNamespace }}\Controller;

    use Symfony\Component\DependencyInjection\ContainerAware;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use Symfony\Component\HttpFoundation\Response;

    /**
     * {{ entityTitle }} controller.
     *
     * @Route("/{{ entityCC }}")
     */
    class {{ entity }}Controller extends ContainerAware
    {
        /**
         * Create a new {{ entityTitle }}.
         *
         * @Route("/new", name="{{ bundleAlias }}_{{ entityCC }}_new")
         * @Template()     
         */
        public function newAction()
        {
            $form = $this->container->get('{{ bundleAlias }}.{{ entityCC }}.form');
            $formHandler = $this->container->get('{{ bundleAlias }}.{{ entityCC }}.form.handler');

            $process = $formHandler->process();
            if ($process) {
                ${{ entityCC }} = $form->getData();
                $this->container->get('session')->getFlashBag()->set('success', '{{ entity | title }} created.');

                return new RedirectResponse($this->container->get('router')->generate('{{ bundleAlias }}_{{ entityCC }}_edit', array('id' => ${{ entityCC }}->getId())), 301);
            }

            return array(
                'form' => $form->createView(),
            );

        }
    }
avro_generator:
    files:
        controller: 
            filename: 'Controller/{{ entity }}Controller.php'
            template: 'AcmeDemoBundle:Templates/Avro/Controller/Controller.php' 
    $ php app/console avro:generate
    $ AcmeDemoBundle:Test
    $ (enter)
    <?php
    namespace Acme\DemoBundle\Controller;

    use Symfony\Component\DependencyInjection\ContainerAware;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use Symfony\Component\HttpFoundation\Response;

    /**
     * Test controller.
     *
     * @Route("/test")
     */
    class TestController extends ContainerAware
    {
        /**
         * Create a new Test.
         *
         * @Route("/new", name="acme_demo_test_new")
         * @Template()     
         */
        public function newAction()
        {
            $form = $this->container->get('acme_demo.test.form');
            $formHandler = $this->container->get('acme_demo.test.form.handler');

            $process = $formHandler->process();
            if ($process) {
                $test = $form->getData();
                $this->container->get('session')->getFlashBag()->set('success', 'Test created.');

                return new RedirectResponse($this->container->get('router')->generate('acme_demo', array('id' => $test->getId())), 301);
            }

            return array(
                'form' => $form->createView(),
            );
        }
    }

Party on!


Installation →