0
votes

Here is app/routing.yml

app:
    resource: "@AppBundle/Resources/config/routing.yml"
    prefix:   /

Here are my Bundle Routes

index:
path:     /
defaults: { _controller: AppBundle:Main:index }

path:     /new
defaults: { _controller: AppBundle:Main:create }
methods:  [POST]

And here is my controller

class MainController extends Controller
{
    public function indexAction()
    {
    return $this->render('AppBundle:Main:index.html.twig', array(
        // ...
    ));
}

public function createAction ()
{
    $post = new Post();
    $post->setTitle('Example')
        ->setBody('THIS IS THE BODY OF THE POST');
    $em = $this->getDoctrine()->getManager();
    $em->persist($post);
    $em->flush();

    return new Response('POST '.$post->getTitle().' ADDED');
}

The index action works fine, but the createAction does not. I would just like to persist the $post object to the database. That should work fine as I followed the documentation, its just the route is not found. I checked to make sure using ./bin/console debug:router/

2

2 Answers

0
votes

I figured it out the yml should be

index:
    path:     /
    defaults: { _controller: AppBundle:Main:index }

create:
    path:     /new
    defaults: { _controller: AppBundle:Main:create }
0
votes

Your MainController file doesn't look right. Should be like this:

class MainController extends Controller
{
    public function indexAction()
    {
        return $this->render('AppBundle:Main:index.html.twig', array(
          // ...
        ));
    }

    public function createAction ()
    {
         $post = new Post();
         $post->setTitle('Example')
              ->setBody('THIS IS THE BODY OF THE POST');
         $em = $this->getDoctrine()->getManager();
         $em->persist($post);
         $em->flush();

         return new Response('POST '.$post->getTitle().' ADDED');
    }
}