Symfony4 Аннотация маршрутизации не работает - PullRequest
0 голосов
/ 07 июня 2018

Я только начал изучать Symfony.Я точно следую этому официальному учебнику .Маршрутизация работает нормально, когда выполняется с config/routes.yaml, но при использовании аннотаций :

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Annotation\Route;

class LuckyController
{

    /**
     *  @Route("/lucky/number")
     */
    public function number(){

        $number = mt_rand(0, 100);

        return new Response(
            '<html><body><h1>MyLucky Number: ' . $number . '</h1></body></html>'
        );
    }
}

Я получаю эту ошибку:

    Exception thrown when handling an exception
(Symfony\Component\Config\Exception\FileLoaderLoadException: [Semantical Error]
 The annotation "@Symfony\Component\Annotation\Route" in method 
App\Controller\LuckyController::number() does not exist, or could not be auto-loaded
 in C:\wamp\vhosts\mysymfony4\config/routes\../../src/Controller/ (which is
 being imported from "C:\wamp\vhosts\mysymfony4\config/routes/annotations.yaml"). Make sure
 annotations are installed and enabled.)

Ответы [ 6 ]

0 голосов
/ 14 мая 2019

Я хочу дать дополнительный совет по поводу ошибок аннотации в symfony4:

Я решил эту проблему следующим образом:

В моем проекте нет config / маршруты / annotation.yaml, поэтому создайтеэтот файл и напишите эти строки:

// config/routes/annotations.yaml

controllers:
    resource: ../../src/Controller/
    type: annotation
0 голосов
/ 26 апреля 2019

Symfony 4 с файлом .htaccess в общей папке, решите проблему с помощью аннотации маршрутизации.

0 голосов
/ 27 ноября 2018

В моем случае добавление 'apache bundle' решило проблему:

"composer require symfony/apache-pack"

Это необходимо, если вы запускаете symfony в браузере через /public/.

0 голосов
/ 28 октября 2018

У меня была такая же проблема с моим первым проектом Symfony 4 на стандартном веб-сервере apache.

Создание файла .htaccess в моей общей папке устранило проблему.

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>
0 голосов
/ 09 июня 2018

Я узнал свою ошибку.Я использовал неправильное пространство имен для маршрутизации.

use Symfony\Component\Annotation\Route;

Это должно было быть:

use Symfony\Component\Routing\Annotation\Route;

РЕДАКТИРОВАТЬ: Я хотел удалить этот вопрос, но система не позволила мне.

0 голосов
/ 07 июня 2018

Убедитесь, что вы импортировали необходимые классы в свой контроллер.

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
...