2013-11-17 4 views
1

Я пытаюсь добавить какое-то значение в db через entitiy (я изучаю примеры). Я создал локальный маршрут для createAction, который находится в DefaultController. Но когда я пытаюсь перейти на страницу, он не говорит о маршрутизаторе.Symfony2 Маршрут не найден для GET/add

Вот мой пример кода. Как я могу это решить. Спасибо за помощь.

/*Local Routes: 

      acme_store_homepage: 
      pattern: /hello/{name} 
      defaults: { _controller: AcmeStoreBundle:Default:index } 
      acme_store_product: 
      pattern: /add 
      defaults: { _controller: AcmeStoreBundle:Default:create } 
      */ 

      /* app Routes: 
      acme_store: 
      resource: "@AcmeStoreBundle/Resources/config/routing.yml" 
      prefix: /

      */ 


      /* 

      Default Controller 

      */ 



      <?php 

      namespace Acme\StoreBundle\Controller; 

      use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
      use Acme\StoreBundle\Entity\Product; 
      use Symfony\Component\HttpFoundation\Response; 

      class DefaultController extends Controller 
      { 
      public function indexAction($name) 
      { 
      return $this->render('AcmeStoreBundle:Default:index.html.twig', array('name' => $name)); 
      } 

      public function createAction() 
      { 
      $product = new Product(); 
      $product->setName("SomeProduct"); 
      $product->setPrice("1000"); 
      $product->setDescription("Bla bla bla."); 


      $em = $this->getDoctrine()->getManager(); 
      $em->persist($product); 
      $em->flush(); 

      return new Response('Product id: '.$product->getId()); 
      } 
      } 



      //Running http://localhost/Symfony/web/app_dev.php/demo/add is throwing an exception: No route found for "GET /demo/add" 
      //Running http://localhost/Symfony/web/app_dev.php/demo/hello/World is Fine... 
+0

Вы уверены, что это работает Http: // Localhost/Symfony/веб /app_dev.php/demo/hello/World ?? или это работает http: //localhost/Symfony/web/app_dev.php/hello/World ?? – bsnrijal

+0

@basantrijal да, я уверен. он работает и дает исходный код слишком –

+0

Здесь 'acme_store: ресурс: "@ AcmeStoreBundle/Ресурсы/конфигурация/routing.yml" префикс: /' U нету определить префикс и в 'acme_store_product: шаблона:/добавить по умолчанию: { _controller: AcmeStoreBundle: По умолчанию: create} 'u определенный только шаблон: try: localhost/Symfony/web/app_dev.php/add – bsnrijal

ответ

1

Здесь

acme_store: 
     resource: "@AcmeStoreBundle/Resources/config/routing.yml" 
     prefix:/

Вы не определяете префикс и в

acme_store_product: 
     pattern: /add 
     defaults: { _controller: AcmeStoreBundle:Default:create } 

Вы определили только:

pattern: /add 

попробовать: localhost/Symfony/web/app_dev.php/add

и если вы хотите получить доступ к его/демо/добавить и/демо/привет/мир добавить

prefix:/demo 

в приложение маршрутов

+0

работает, но префикс:/demo. Я думаю, что это не будет выглядеть на демо-странице. –

+0

для/демо только для работы добавить маршрут с рисунком:/в расслоение маршрут, как 'acme_store_homepage: pattern:/ defaults: {_controller: AcmeStoreBundle: По умолчанию: index}' – bsnrijal

+0

OK. теперь я понимаю. DemoBundle и StoreBundle отличаются. у них есть и приветственное приложение. Я работаю над StoreBundle и пытаюсь получить доступ к DemoBundle, и это было неправильно. Спасибо за помощь. –

Смежные вопросы