2013-02-22 6 views
0

Нет маршрут найден для "GET /hello.html"Symfony - маршрут не найден

Это ошибка, я получаю, когда я пытаюсь получить доступ к http://localhost/project/web/app_dev.php/hello.html

:

контроллера по умолчанию
<?php 
/** 
* @Route("/hello.html") 
* @Template() 
*/ 
public function indexAction() 
{ 
    return array(); 
} 
?> 

Routing. YML:

MyHelloworldBundle: 
    resource: "@MyHelloworldBundle/Controller/" 
    type:  annotation 
    prefix: /

AppKernel.php:

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      new Symfony\Bundle\TwigBundle\TwigBundle(), 
      new Symfony\Bundle\MonologBundle\MonologBundle(), 
      new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
      new Symfony\Bundle\AsseticBundle\AsseticBundle(), 
      new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
      new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
      new JMS\AopBundle\JMSAopBundle(), 
      new JMS\DiExtraBundle\JMSDiExtraBundle($this), 
      new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(), 
      new My\HelloworldBundle\MyHelloworldBundle(), 
     ); 

     if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
      $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
      $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
     } 

     return $bundles; 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) 
    { 
     $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); 
    } 
} 

Вся файловая структура, кажется, в порядке, src/My/HelloworldBundle/... Что случилось?

Единственное, что я сделал до сих пор, это удалить демо-версию acme - три части routing_dev.php и строку из AppKernel.php.

Изменение аннотации в контроллере к чему-то другому тоже не работает. Файл представления src/My/HelloworldBundle/Resources/views/Default/index.html.twig существует.

EDIT:

Ни один из маршрутов не соответствует, когда я исполняю маршрут: команды матча.

Это журнал ошибок: http://khernik.pl/asd.png И верхняя часть: http://khernik.pl/asdf.png

я теперь выполняются все с самого начала, с фреймворка большинство настроек по умолчанию (с его собственный код добавляется при создании нового узелок). Единственное, что я сделал, это удаление линии Acme из AppKernel.php и трех первых блоков для acme из routing_dev.yml. Все кажется правильным.

Тем не менее, все еще не работает.

EDIT 2 - ПОЛНЫЙ DEFAULT CONTROLLER:

<?php 

namespace My\HelloworldBundle\Controller; 

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

class DefaultController extends Controller 
{ 
    /** 
    * @Route("/hello/{name}") 
    * @Template() 
    */ 
    public function indexAction($name) 
    { 
     return array('name' => $name); 
    } 
} 
+0

Вы разместили правильное пространство имен в верхней части своего файла, так как оно не отображается в вашем сообщении. – artragis

+0

namespace My \ HelloworldBundle \ Controller; - sure – khernik

+0

Что делать, если вы запускаете ['php app/console router: debug'] (http://symfony.com/doc/current/book/routing.html#visualizing-debugging-routes)? – cheesemacfly

ответ

-1

Пожалуйста, добавьте ControllerName перед тем Hello.html

class DemoController extends Controller 
{ 
    /** 
    * @Route("/hello.html") 
    * @Template() 
    */ 
    public function indexAction() 
    { 
     return array(); 
    } 

Как, Чтобы получить доступ к этому: вызвать этот адрес ниже:

http://localhost/project/web/app_dev.php/demo/hello.html 
+0

Зачем ему нужно поставить ControllerName? – cheesemacfly

+0

Не работает. – khernik

0

Просьба указать значение Template() в аннотация вашего DemoController

<?php 
/** 
* @Route("/hello") 
* @Template('MyHelloworldBundle:Demo:hello.html') 
*/ 
public function helloAction() 
{ 
    return array(); 
} 
?> 
Смежные вопросы