Symfony2: Поиск маршрута «GET / lucky / number» не найден.

Я начинаю учебник (как новичок), и все отлично работает до:

http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller на шаге «Создание страницы: Маршрут и контроллер»

Я создал файл с именем «/var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php

но когда я открываю http: // [Server-IP]: 8000 / app_dev.php / lucky / number всегда получает 404:

Не найдено маршрутов для «GET / lucky / number» 404 Not Found – NotFoundHttpException 1 связанный Исключение: ResourceNotFoundException »

[2/2] NotFoundHttpException: маршрут не найден для «GET / lucky / number» + [1/2] ResourceNotFoundException: +

routing.yml

app: resource: "@AppBundle/Controller/" type: annotation 

контроллер

 namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Response; class LuckyController { /** * @Route("/lucky/number") */ public function numberAction() { $number = rand(0, 100); return new Response( '<html><body>Lucky number: '.$number.'</body></html>' ); } } 

Не знаю, где ошибка …

ERROR – Uncaught PHP Exception Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: «Не найден маршрут для« GET / lucky / number »» в / var / www / html / [Symfony-Folder] / app / cache / dev / classes. php line 2061

 php app/console debug:route [router] Current routes Name Method Scheme Host Path _wdt ANY ANY ANY /_wdt/{token} _profiler_home ANY ANY ANY /_profiler/ _profiler_search ANY ANY ANY /_profiler/search _profiler_search_bar ANY ANY ANY /_profiler/search_bar _profiler_purge ANY ANY ANY /_profiler/purge _profiler_info ANY ANY ANY /_profiler/info/{about} _profiler_phpinfo ANY ANY ANY /_profiler/phpinfo _profiler_search_results ANY ANY ANY /_profiler/{token}/search/results _profiler ANY ANY ANY /_profiler/{token} _profiler_router ANY ANY ANY /_profiler/{token}/router _profiler_exception ANY ANY ANY /_profiler/{token}/exception _profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css _configurator_home ANY ANY ANY /_configurator/ _configurator_step ANY ANY ANY /_configurator/step/{index} _configurator_final ANY ANY ANY /_configurator/final _twig_error_test ANY ANY ANY /_error/{code}.{_format} homepage ANY ANY ANY / 

    Я только что добавил

     <?php 

    к файлу «LuckyNumberController», и он работает … действительно странно.

    Спасибо всем

    Попробуйте этот URL:

    Http: // [Сервер-IP]: 8000 / app_dev.php / о / удачлив / номер

    В книге Symfony есть ошибка: они забыли поддержку демонстрационного приложения i18n.

    Просто добавьте параметр « / en » перед маршрутизацией.


    Я знаю, что этот вопрос закрыт, но я надеюсь, что мой ответ поможет другим, которые все еще сталкиваются с этой проблемой.

    Иногда это проблема с кешем. Попробуйте удалить папку dev из / project / var / cache / dev.

    Как говорит authentictech , вы также можете попробовать выполнить команду:

    php bin/console cache:clear

    Если вы хотите указать среду, вы должны добавить свойство –env = prod.

    На самом деле вы не расширяете класс Symfony Controller. Это должно быть класс LuckyController расширяет контроллер

     // src/AppBundle/Controller/LuckyController.php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Response; class LuckyController extends Controller { /** * @Route("/lucky/number") */ public function numberAction() { $number = rand(0, 100); return new Response('<html><body>Lucky number: '.$number.'</body></html>'); } } 

    EDIT: в конце концов, проблема в этом вопросе заключалась не в расширении контроллера, поэтому игнорировать мой ответ.

    Я скопировал и вставил ваш контроллер в существующий проект Symfony, и маршрут сразу же появился. Так что ничего плохого в контроллере.

    Я также сравнивал routing.yml, и это то же самое.

    Осталось только проверить структуру папок и убедиться, что у вас нет разных проектов Symfony, смешанных друг с другом; возможно, вы редактируете нужный файл, но начинаете веб-сервер с другого пути.

    Проверьте тщательно или перестройте проект на совершенно другом пути. Поскольку вы тестируете со встроенным веб-сервером, вам не нужно вставлять ваш проект в / var / www / html (на самом деле лучше не делать этого).

    http: // localhost: 8080 / SymfonyProject /web/app_dev.php/lucky/number

    Меня устраивает. Измените «SymfonyProject» на папку с названием вашего проекта или удалите ее, если ваш проект указан непосредственно сервером. Также обратите внимание на порт, который работает для вас (localhost: 8080). В моем случае 8080, в вашем может быть 8000 или что-то еще.

    Еще одна причина, по которой вы можете получить «Нет маршрута, найденного для« GET / luck / number », потому что у вас есть вкладка перед аннотацией @Route . Я думал, что я запрограммировал свой код точно так же, как в примере, и получал эту ошибку, но оказалось, что это вкладка.

    См. Следующий код ниже, и обратите внимание, что первый из них вызывает исключение «Нет маршрута …»:

     /** * @Route("/lucky/number") */ /** * @Route("/lucky/number") */ 

    В случае, если кто-то сталкивается с этой проблемой: для меня проблема была двоякой:

    1. я забыл назначить пространство namespace AppBundle\Controller; пространства namespace AppBundle\Controller;
    2. я не добавлял инструкцию использования для использования шаблона use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

    Имел ту же проблему, но по совершенно иной причине, чем те, которые показаны здесь до сих пор …

    Как-то моя демо не определяла локаль по умолчанию. Кажется, есть несколько конфигураций, которые могли бы решить эту проблему, но я не достаточно знаком с Symfony, чтобы узнать точную причину. Моим решением до этого было просто определить локаль в URL-адресе, например:

    /app_dev.php/ ru / lucky / number

    Расширение базового класса Контроллер не работал для меня. Чтобы решить эту проблему, мне пришлось внести следующие изменения в web / app.php

     $kernel = new AppKernel('prod', true); 

    Также мне пришлось добавить «en» в URL: http: //scotchbox.demo/en/lucky/number