Я начинаю учебник (как новичок), и все работает нормально до:
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 /
Я только что добавил
<?php
к файлу «LuckyNumberController» и он работает …. действительно странно.
Спасибо всем
Попробуйте этот URL:
Http: // [Сервер-IP]: 8000 / app_dev.php / о / удачлив / номер
В Книге Symfony есть ошибка: они забыли о поддержке демо-приложения i18n.
Просто добавьте/ анmsgstr «параметр перед маршрутизацией.
Я знаю, что этот вопрос закрыт, но я надеюсь, что мой ответ поможет другим, кто все еще сталкивается с этой проблемой.
Иногда это проблема с кешем. Попробуй удалить 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>');
}
}
РЕДАКТИРОВАТЬ: В конце концов, проблема в этом вопросе не в расширении контроллера, поэтому проигнорируйте мой ответ.
Я скопировал и вставил ваш контроллер в существующий проект Symfony, и маршрут сразу появился. Так что ничего плохого в контроллере.
Я также сравнил routing.yml, и это то же самое.
Осталось только проверить структуру папок и убедиться, что у вас нет разных проектов Symfony, смешанных вместе; возможно, вы редактируете правильный файл, но запускаете веб-сервер по другому пути.
Проверьте внимательно или перестройте проект по совершенно другому пути. Поскольку вы тестируете со встроенным веб-сервером, вам не нужно помещать свой проект в / var / www / html (на самом деле лучше этого не делать).
HTTP: // локальный: 8080 /SymfonyProject/web/app_dev.php/lucky/number
Меня устраивает. Измените «SymfonyProject» на папку с именем вашего проекта или удалите ее, если ваш проект указан непосредственно сервером.
Также обратите внимание на порт, который работает для вас (localhost: 8080). В моем случае это 8080, в вашем может быть 8000 или что-то еще.
Еще одна причина, по которой вы можете получить «Не найден маршрут для« GET / luck / number », заключается в том, что у вас есть вкладка перед @Route
аннотаций. Я думал, что запрограммировал свой код точно так же, как в примере, и получал эту ошибку, но оказалось, что это была вкладка.
См. Следующий код ниже и обратите внимание, что первый из них создает исключение «No Route found …»:
/**
* @Route("/lucky/number")
*/
/**
* @Route("/lucky/number")
*/
В случае, если кто-то еще сталкивается с этой проблемой: для меня проблема была двойной:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;