我刚开始学习Symfony。我完全关注this official tutorial。完成config/routes.yaml
但使用annotations
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.)
答案 0 :(得分:7)
我发现了我的错误。我使用错误的命名空间进行路由。
Console.ReadLine() |> float
应该是:
use Symfony\Component\Annotation\Route;
修改强> 我想删除这个问题,但系统不会让我。
答案 1 :(得分:3)
我在标准apache网络服务器上的第一个Symfony 4项目遇到了相同的问题。
在我的公用文件夹中创建.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>
答案 2 :(得分:2)
确保您已将所需的类导入控制器。
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
答案 3 :(得分:2)
就我而言,添加“ apache bundle”解决了问题:
"composer require symfony/apache-pack"
如果通过/ public /在浏览器中运行symfony,则需要此。
答案 4 :(得分:0)
在公用文件夹中带有文件.htaccess的Symfony 4,可以解决路由注释问题。
答案 5 :(得分:0)
我想就symfony4中的注释错误提供其他建议:
我处理了这个问题:
我的项目没有config / routes / annotation.yaml,因此请创建该文件并编写以下行:
pattern Freq score rank true_string
DT%E 37568 1138.4242 1 DTGE
%TGE 37666 1018.0000 2 DTGE
D%GE 37641 1017.3243 3 DTGE
DTG% 37665 965.7692 4 DTGE
%VGNE 34234 684.6800 5 SVGNE
SVGN% 34281 634.8333 6 SVGNE
SV%NE 34248 634.2222 7 SVGNE
SVG%E 34265 623.0000 8 SVGNE
%LGNE 41098 595.6232 9 SLGNE
SL%NE 41086 595.4493 10 SLGNE
SLGN% 41200 564.3836 11 SLGNE
SPT%AYNE 35082 539.7231 12 SPTAAYNE
SP%AAYNE 35094 531.7273 13 SPTAAYNE
SPTA%YNE 35061 531.2273 14 SPTAAYNE
SPTAA%NE 35225 518.0147 15 SPTAAYNE
SPTAAYN% 35144 516.8235 16 SPTAAYNE
%PTAAYNE 35111 516.3382 17 SPTAAYNE
S%TAAYNE 35100 516.1765 18 SPTAAYNE
SPTAAY%E 35130 509.1304 19 SPTAAYNE
SLG%E 41467 450.7283 20 SLGNE
答案 6 :(得分:0)
我遇到了同样的问题(在我的Symfony5项目中),但是我的错误是使用单引号而不是双引号来表示路线和路线名称。有时候,一些小小的愚蠢的错误会浪费您很多时间。顺便说一下,在SF4 / SF5中,我们应该避免使用FrameworkExtraBundle的路由。
Sensio\Bundle\FrameworkExtraBundle\Configuration\Route
我们应该使用symfony组件(路由/注释)。
use Symfony\Component\Routing\Annotation\Route;
答案 7 :(得分:-1)
确保安装annotations
库composer req annotations
这是我的问题,这里不再赘述。