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!