Symfony2: не найден маршрут для & quot; GET / lucky / number & quot;

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

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: // [Сервер-IP]: 8000 / app_dev.php / удачливы / номер всегда получаю 404:

No route found for "GET /lucky/number"404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »

[2/2] NotFoundHttpException: No route found for "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>' );
}
}

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

ОШИБКА — неперехваченное исключение PHP Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException: «Не найден маршрут для» GET / lucky / number «» в / var / www / html / [Symfony-Folder] / app / cache / dev / classes. линия php 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  /

21

Решение

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

<?php

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

Спасибо всем

22

Другие решения

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

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

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

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


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

5

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

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

php bin/console cache:clear

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

3

Вы на самом деле не расширяете класс 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>');
}

}

РЕДАКТИРОВАТЬ: В конце концов, проблема в этом вопросе не в расширении контроллера, поэтому проигнорируйте мой ответ.

1

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

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

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

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

0

HTTP: // локальный: 8080 /SymfonyProject/web/app_dev.php/lucky/number

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

0

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

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

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

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

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

  1. я забыл назначить пространство имен namespace AppBundle\Controller;
  2. я не добавил заявление об использовании для шаблона use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
0
По вопросам рекламы [email protected]